最近我开始使用Asp.Net Core 2.0 MVC项目 个人认证。 ConfigureServices如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DBConnection")));
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
}
出于某种原因,注销后User.Identity.IsAuthenticated和_signInManager.IsSignedIn(User)仍然是真的,无论我是这样做的:await _signInManager.SignOutAsync();
还是await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
而不是如果我关闭并稍后在浏览器中重新打开应用程序。
我总是需要它,如果有人回到索引应用程序或关闭并在浏览器中重新打开应用程序,系统会注销任何以前打开的会话并强制登录。
我尝试过以下但没有成功!
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login()
{
var auth = User.Identity.IsAuthenticated; // Still true
if (_signInManager.IsSignedIn(User)) // Still true
{
await _signInManager.SignOutAsync();
//HttpContext = new DefaultHttpContext
//{
// User = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, "username") }, ""))
//};
}
else
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
}
return View();
}