替换cookie ASP.NET Core 1.0中的值

时间:2016-03-17 23:15:51

标签: asp.net-mvc cookies asp.net-core-mvc asp.net-authentication asp.net-core-1.0

我在没有ASP.NET身份的ASP.NET Core 1.0中使用cookie中间件 - 如本文所述: https://docs.asp.net/en/latest/security/authentication/cookie.html

当用户对他/她的个人资料进行某些更改时,我需要更改Cookie中的某些值。在这种情况下,本文告诉我

  

调用context.ReplacePrincipal()并设置context.ShouldRenew标志   真的

我该怎么做?我认为这篇文章指的是HttpContext。我在HttpContext下没有看到ReplacePrincipal()方法。

我很感激这方面的一些帮助。感谢。

1 个答案:

答案 0 :(得分:4)

在文章中,他们引用了CookieValidatePrincipalContext选项中OnValidatePrincipal代表的CookieAuthenticationEvents

您必须在app.UseCookieAuthentication中的startup.cs函数中将其连接起来,如下所示:

app.UseCookieAuthentication(options =>
{
     //other options here
     options.Events = new CookieAuthenticationEvents
     {
          OnValidatePrincipal = UpdateValidator.ValidateAsync
     };     
 });

UpdateValidator函数看起来像:

public static class UpdateValidator
{
    public static async Task ValidateAsync(CookieValidatePrincipalContext context)
    {
        //check for changes to profile here

        //build new claims pricipal.
        var newprincipal = new System.Security.Claims.ClaimsPrincipal();

        // set and renew
        context.ReplacePrincipal(newprincipal);
        context.ShouldRenew = true;
    }
}

你可以在github上找到SecurityStampValidator类中的一个很好的例子:https://github.com/aspnet/Identity/blob/dev/src/Identity/SecurityStampValidator.cs