0
我需要註銷一個用戶,以防他關閉運行我的網站的瀏覽器/標籤。我已將isPersistant
布爾設置爲false
,但它不會將用戶登出。如果選項卡關閉,我想強制用戶再次登錄。我不想使用jQuery。在瀏覽器或標籤上註銷close
下面是一些從我目前的代碼中的相關片斷:
的AccountController
var result = await SignInManager.PasswordSignInAsync(model.Username,
model.Password, false, shouldLockout: true);`
Startup.Auth
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<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(5),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
它不容易實現。你需要像心跳一樣告訴服務器用戶仍然打開一個標籤/窗口。也就是定期從瀏覽器向服務器發送確認(通過HTTP請求)。考慮一下:當用戶打開兩個選項卡並且它們都包含您的應用程序並且用戶關閉其中一個時會發生什麼? –
@AndreiV我明白你在做什麼。我目前正在調查SignalR作爲一種可能的解決方案,我看到的唯一問題是回發會破壞與Hub的連接,這可能看起來像一個正在關閉的標籤。 – Swifty
我不確定我明白你的意思是回發並斷開連接。我在想的是一個JS腳本,它定期(1-2-3-X分鐘)向服務器發送一個AJAX請求,告訴它用戶仍然至少打開一個標籤。 –