将代码挂钩到基于cookie的登录

时间:2014-07-22 15:00:10

标签: asp.net asp.net-mvc cookies asp.net-mvc-5 asp.net-identity

ASP.NET Identity中,我在哪里可以找到'成功登录,如果我使用cookies?

我想做的只是触发一些代码来检查某些内容,我希望每个用户在登录时触发一次该代码,无论是通过AccountController登录还是或通过cookies auth ...自动登录。

我认为OnValidateIdentity会是一个好地方,但每次请求都会发生这种情况,所以不是我想要的。

我的Cookie身份验证设置:

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager<User, long>, User, long>(
                    validateInterval: TimeSpan.FromMinutes(20), 
                    regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
                    getUserIdCallback: id => (long.Parse(id.GetUserId()))
                    )
            }
        });

1 个答案:

答案 0 :(得分:0)

您已经拥有Auth cookie时无需登录。您只需在错过cookie或cookie过期时登录。 Cookie将随每个请求一起发送,这就是每次触发OnValidateIdentity的原因。

但是您可以在AccountController Login(Post)方法中连接一些逻辑。

此外,您可以编辑Cookie过期时间,以便更多地调用Login方法。