扩展ClaimsIdentity?

时间:2019-07-11 18:48:19

标签: asp.net-core asp.net-core-mvc asp.net-identity asp.net-core-2.0 claims-based-identity

我正在尝试自定义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);

问题在于,每当我从ClaimsPrincipalHttpContext检索ControllerBase时,身份不是我在登录用户时创建的身份,而是普通的{{1 }}。

有什么办法可以改变吗?

0 个答案:

没有答案