簡體   English   中英

將代碼掛接到基於cookie的登錄中

[英]Hooking code into cookie-based login

ASP.NET Identity中,如果我使用cookie,我應該在哪里“登錄”成功的登錄信息?

我想要做的就是簡單地觸發一些代碼來檢查某件事,並且我希望該代碼為每個用戶登錄時觸發一次,無論是通過AccountController登錄還是通過cookie 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()))
                    )
            }
        });

當您已經具有Auth cookie時,您無需登錄。 您只需在缺少cookie或cookie過期時登錄即可。 cookie將隨每個請求一起發送,這就是為什么每次觸發OnValidateIdentity的原因。

但是您可以在AccountController Login(Post)方法中添加一些邏輯。

您還可以編輯cookie的過期時間,以便調用Login方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM