我有一个如下的AccountController操作,可以在浏览器中正常工作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff(string returnUrl)
我遇到过用户声称“陈旧”的情况。我必须强制注销服务器端。对此的快速修复是使用上述函数的内容创建内部函数。但是,我想知道是否有办法(轻松)从我的(非控制器)服务器代码重用此接口。我可以滥用? HttpClient要做到这一点,但我怀疑有一种更简单的内部重用方式吗?
答案 0 :(得分:1)
在AccountController
中创建一个方法,该方法将封装当前用户身份无效的所有逻辑:
[NonAction]
public async Task InvalidateUser()
{
// CreateIdentityForCurrentUser is your function
// that create fresh claims identity for the current user
ClaimsIdentity identity = CreateIdentityForCurrentUser();
var ctx = this.Request.GetOwinContext();
var authManager = ctx.Authentication;
authManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(
new ClaimsPrincipal(identity),
new AuthenticationProperties { IsPersistent = false });
}
使用此方法,您无需注销/登录用户以刷新其声明。
您可以通过服务器中的任何其他方法进行呼叫