在服务器内部调用/重用AccountController注销

时间:2015-10-21 08:12:24

标签: asp.net-mvc

我有一个如下的AccountController操作,可以在浏览器中正常工作:

       [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff(string returnUrl)

我遇到过用户声称“陈旧”的情况。我必须强制注销服务器端。对此的快速修复是使用上述函数的内容创建内部函数。但是,我想知道是否有办法(轻松)从我的(非控制器)服务器代码重用此接口。我可以滥用? HttpClient要做到这一点,但我怀疑有一种更简单的内部重用方式吗?

1 个答案:

答案 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 });
    }

使用此方法,您无需注销/登录用户以刷新其声明。

您可以通过服务器中的任何其他方法进行呼叫