永久Cookie在浏览器关闭时被删除-Identity 2.0

詹基

我正在使用asp.net Identity 2.0来管理用户登录。我正在遵循Identity 2.0的示例,并且在关闭整个浏览器后无法使cookie持久。这在所有浏览器上都在发生。

码:

客户总监

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, isPersistent: true, shouldLockout: true);

    switch (result)
    {
        case SignInStatus.Success:
            return RedirectToLocal(returnUrl);

        case SignInStatus.LockedOut:
            return View("Lockout");

        case SignInStatus.Failure:
        default:
            ModelState.AddModelError("", "Invalid login attempt.");
            return View(model);
    }
}

登录助手

public async Task<SignInStatus> PasswordSignIn(string userName, string password, bool isPersistent, bool shouldLockout)
{
    var user = await UserManager.FindByNameAsync(userName);
    if (user == null)
    {
        return SignInStatus.Failure;
    }

    if (await UserManager.IsLockedOutAsync(user.ID))
    {
        return SignInStatus.LockedOut;
    }

    if (await UserManager.CheckPasswordAsync(user, password))
    {
        // password verified, proceed to login
        return await SignIn(user, isPersistent);
    }

    if (shouldLockout)
    {
        await UserManager.AccessFailedAsync(user.ID);
        if (await UserManager.IsLockedOutAsync(user.ID))
        {
            return SignInStatus.LockedOut;
        }
    }

    return SignInStatus.Failure;
}

--

private async Task<SignInStatus> SignIn(User user, bool isPersistent)
{
    await SignInAsync(user, isPersistent);
    return SignInStatus.Success;
}

--

public async Task SignInAsync(User user, bool isPersistent)
{
    var userIdentity = await user.GenerateUserIdentityAsync(UserManager);
    AuthenticationManager.SignIn(
       new AuthenticationProperties
        {
           IsPersistent = isPersistent
        },
        userIdentity
    );
}

启动验证

app.UseCookieAuthentication(new CookieAuthenticationOptions
   {
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
       CookieName = "ApplicationCookie",
       LoginPath = new PathString("/Account/Login"),
       ExpireTimeSpan = System.TimeSpan.FromMinutes(180), // 3 hours
       SlidingExpiration = true,
       Provider = new CookieAuthenticationProvider
       {
          OnValidateIdentity = ApplicationCookieIdentityValidator.OnValidateIdentity(
               validateInterval: TimeSpan.FromMinutes(0),
               regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
               getUserIdCallback: (user) => (user.GetGuidUserId()))
       }
   });

抱歉,没有代码,但是我看不到我在做错什么,因为在没有手动注销的情况下关闭浏览器时,cookie无法保存3个小时?

郝公

该问题与OnValidateIdentity中的错误有关,该错误在重新生成cookie时当前始终将IsPersistent设置为false(即使原始cookie是持久性的)。因此,因为将validateInterval设置为0(始终验证每个请求),所以实际上永远不会获得持久性cookie。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WSO2 Identity Server:在注册时自动将用户添加到角色

来自分类Dev

Symfony2:记住我,重新打开浏览器时cookie被删除

来自分类Dev

关闭浏览器后清除缓存-symfony2

来自分类Dev

有关集成WSO2 API管理器,Identity Server和Shibboleth的建议

来自分类Dev

chrome.identity.getAuthToken返回“错误的客户ID:{0}”错误

来自分类Dev

Azure AD与.NET Identity 2

来自分类Dev

ASP.Net Identity 2 RemovePassword模拟

来自分类Dev

@@ Identity从Access Frontend(SQL Server Express后端)返回0

来自分类Dev

从ASP.NET Identity 2.x中的角色中删除用户

来自分类Dev

通过Google OAuth2登录时设置User.Identity.Name

来自分类Dev

WSO2与Identity Server的单点登录

来自分类Dev

关闭浏览器时,AngularJS删除所有cookie的方法

来自分类Dev

ec2上的RStudio服务器-关闭浏览器选项卡时不持久

来自分类Dev

如果使用yii2,则不会在Google Chrome浏览器中删除Cookie

来自分类Dev

ASP.NET Identity 2角色似乎在cookie中

来自分类Dev

在没有浏览器的情况下针对WSO2 Identity Server进行身份验证,并获取SAML2断言消息

来自分类Dev

使用itfoxtec-identity-saml2时动态刷新用户声明

来自分类Dev

WSO2 Identity Server与ADFS Server集成时抛出NullpointerException

来自分类Dev

SQL Scope_Identity返回0或-1

来自分类Dev

WSO2 Identity Server升级

来自分类Dev

无效/浏览器关闭-用户返回时将状态更改为0,然后更改为1

来自分类Dev

关闭浏览器后,cookie被删除

来自分类Dev

chrome.identity.getAuthToken返回“错误的客户ID:{0}”错误

来自分类Dev

ASP.Net Identity 2 RemovePassword模拟

来自分类Dev

通过Google OAuth2登录时设置User.Identity.Name

来自分类Dev

关闭浏览器后如何删除或取消设置Cookie?

来自分类Dev

使用ASP.NET Identity 2进行身份验证时,如何获得返回的User对象?

来自分类Dev

当用户关闭浏览器时将状态更改为0

来自分类Dev

wso2 Identity Server-无法删除租户

Related 相关文章

  1. 1

    WSO2 Identity Server:在注册时自动将用户添加到角色

  2. 2

    Symfony2:记住我,重新打开浏览器时cookie被删除

  3. 3

    关闭浏览器后清除缓存-symfony2

  4. 4

    有关集成WSO2 API管理器,Identity Server和Shibboleth的建议

  5. 5

    chrome.identity.getAuthToken返回“错误的客户ID:{0}”错误

  6. 6

    Azure AD与.NET Identity 2

  7. 7

    ASP.Net Identity 2 RemovePassword模拟

  8. 8

    @@ Identity从Access Frontend(SQL Server Express后端)返回0

  9. 9

    从ASP.NET Identity 2.x中的角色中删除用户

  10. 10

    通过Google OAuth2登录时设置User.Identity.Name

  11. 11

    WSO2与Identity Server的单点登录

  12. 12

    关闭浏览器时,AngularJS删除所有cookie的方法

  13. 13

    ec2上的RStudio服务器-关闭浏览器选项卡时不持久

  14. 14

    如果使用yii2,则不会在Google Chrome浏览器中删除Cookie

  15. 15

    ASP.NET Identity 2角色似乎在cookie中

  16. 16

    在没有浏览器的情况下针对WSO2 Identity Server进行身份验证,并获取SAML2断言消息

  17. 17

    使用itfoxtec-identity-saml2时动态刷新用户声明

  18. 18

    WSO2 Identity Server与ADFS Server集成时抛出NullpointerException

  19. 19

    SQL Scope_Identity返回0或-1

  20. 20

    WSO2 Identity Server升级

  21. 21

    无效/浏览器关闭-用户返回时将状态更改为0,然后更改为1

  22. 22

    关闭浏览器后,cookie被删除

  23. 23

    chrome.identity.getAuthToken返回“错误的客户ID:{0}”错误

  24. 24

    ASP.Net Identity 2 RemovePassword模拟

  25. 25

    通过Google OAuth2登录时设置User.Identity.Name

  26. 26

    关闭浏览器后如何删除或取消设置Cookie?

  27. 27

    使用ASP.NET Identity 2进行身份验证时,如何获得返回的User对象?

  28. 28

    当用户关闭浏览器时将状态更改为0

  29. 29

    wso2 Identity Server-无法删除租户

热门标签

归档