替换 cookie ASP.NET Core 1.0 中的值
Replace value in cookie ASP.NET Core 1.0
我在 ASP.NET Core 1.0 中使用 cookie 中间件,没有 ASP.NET Identity - 如本文所述:
https://docs.asp.net/en/latest/security/authentication/cookie.html
当用户对 his/her 配置文件进行某些更改时,我需要更改 cookie 中的某些值。在这种情况下,这篇文章告诉我
call context.ReplacePrincipal() and set the context.ShouldRenew flag
to true
我该怎么做?我认为这篇文章指的是 HttpContext。我在 HttpContext 下没有看到 ReplacePrincipal() 方法。
在此方面,我将不胜感激。谢谢
在文章中,他们在 CookieAuthenticationEvents
选项中引用了来自 OnValidatePrincipal
委托的 CookieValidatePrincipalContext
。
你必须在 startup.cs
的 app.UseCookieAuthentication
函数中像这样连接它:
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;
}
}
SecurityStampValidator
class 中有一个很好的例子,您可以在 github 上找到:https://github.com/aspnet/Identity/blob/dev/src/Identity/SecurityStampValidator.cs
我在 ASP.NET Core 1.0 中使用 cookie 中间件,没有 ASP.NET Identity - 如本文所述: https://docs.asp.net/en/latest/security/authentication/cookie.html
当用户对 his/her 配置文件进行某些更改时,我需要更改 cookie 中的某些值。在这种情况下,这篇文章告诉我
call context.ReplacePrincipal() and set the context.ShouldRenew flag to true
我该怎么做?我认为这篇文章指的是 HttpContext。我在 HttpContext 下没有看到 ReplacePrincipal() 方法。
在此方面,我将不胜感激。谢谢
在文章中,他们在 CookieAuthenticationEvents
选项中引用了来自 OnValidatePrincipal
委托的 CookieValidatePrincipalContext
。
你必须在 startup.cs
的 app.UseCookieAuthentication
函数中像这样连接它:
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;
}
}
SecurityStampValidator
class 中有一个很好的例子,您可以在 github 上找到:https://github.com/aspnet/Identity/blob/dev/src/Identity/SecurityStampValidator.cs