[英]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.