我需要区分一个按钮的注销,它有一个 SignOutAsync 方法调用和一个实际的会话过期。有没有办法我们可以做到这一点?
这就是我目前所拥有的:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
// Adds a cookie for the browser to remember
.AddCookie(options =>
{
options.LoginPath = "/signin";
options.LogoutPath = "/signout";
options.AccessDeniedPath = "/forbidden";
options.SlidingExpiration = true;
});
签出方式
[HttpGet]
public async Task<IActionResult> SignOut()
{
// Other code
await httpContext.SignOutAsync();
// Redirects him/her to the home route
return Redirect((HttpContext.Request.Scheme +
"://" +
HttpContext.Request.Host +
HttpContext.Request.Path.ToString() +
HttpContext.Request.QueryString).Replace(HttpContext.Request.Path.ToString(), "/" + global.Portal.Name + "?so=1"));
}
除其他外,这是我目前要尝试区分的内容:
if (_httpContext.User.Identity.IsAuthenticated)
await this.UserIdentitySignOutAsync(_httpContext, _context);
else if(_httpContext.Request.Path.Value.ToLower().Contains("/signin"))
Feedback = new Feedback() { Message = "Your session has expired.", IsValid = false };
当然,这是行不通的,因为有多个来源,我想根据登录结果显示不同的消息。但我需要知道的重要一点是,是否有任何方法可以区分两者。
我的意思是......因为此时 cookie 已经被清除,我们没有任何关于它发生了什么的信息。
如果这是一种区分这种差异的方法,请告诉我。我会很高兴地收到它。
谢谢你的帮助。