我正在尝试自定义ClaimsIdentity
。
原因是我不想使用Cookie来保留所有声明,因为在我的应用程序上下文中,我有很多(数百个)Projects
用户可以访问并可以轻松地使超过4k的cookie气球(我认为是极限)
这是我的自定义课程
public class CustomIdentity : ClaimsIdentity
{
public List<string> Projects { get; set; } = new List<string>();
public CustomIdentity(List<Claim> claims, string authScheme)
: base(claims, authScheme)
{
Projects.Add("test data");
}
}
以及用户登录时如何创建身份:
var claims = new List<Claim>
{
new Claim("Id", userId),
new Claim(ClaimTypes.Email, email)
};
var claimsIdentity = new CustomIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
{
ExpiresUtc = DateTime.Now.AddHours(1),
IsPersistent = true,
IssuedUtc = DateTime.Now
};
await httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);
问题在于,每当我从ClaimsPrincipal
或HttpContext
检索ControllerBase
时,身份不是我在登录用户时创建的身份,而是普通的{{1 }}。
有什么办法可以改变吗?