.NET Core如何为每个请求刷新身份用户声明?

时间:2017-08-25 18:40:28

标签: c# asp.net-core-identity

我们将角色存储在经过身份验证的用户的身份声明中。因此,如果后端数据库记录与角色相关的更改,我们希望cookie声明使用该信息进行更新,而不会强制用户再次注销。我能想到的唯一方法是使用ActionFilter重新生成这些角色:

public class PageAccessFilter : IActionFilter
{

    public void OnActionExecuting(ActionExecutingContext context)
    {
        IAuthenticationService authenticationService = (IAuthenticationService) context.HttpContext.RequestServices.GetService(typeof(IAuthenticationService));
        if (authenticationService != null)
        {
            if (context.HttpContext.User != null)
            {
                var user = authenticationService.GetCurrentUser();
                authenticationService.RefreshUser(user); //claims, identity regeneration, and signout/signin occur here
            }
        }
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {

    }
}

然而,这对我来说似乎很昂贵。这意味着每次请求都会重写cookie,这不是资源密集型的吗?有一个更好的方法吗?

0 个答案:

没有答案