不使用ApplicationDbContext更新存储的声明标识中的值

时间:2018-12-06 09:55:08

标签: asp.net-identity

正如标题所述,如何更新我的索赔身份中的储值?而且我一直在通过Internet搜索,我更新的方式需要使用ApplicationDbContext

这是我存储索赔的方式

var user = await repository.GetActiveUserByUsernameAsync(username);

if (user != null)
{
    if (MyHasher.Verify(password, user.Password))
    {
        var principal = new ClaimsPrincipal();
        var claims = new List<Claim>
        {
            new Claim("UserId", user.Id.ToString()),
            new Claim("UserDisplayName", user.DisplayName)
        };
        principal.AddIdentity(new ClaimsIdentity(new GenericIdentity(username, "Username"), claims));
        return Result.Ok(principal);
    }
}

我进行身份扩展以获取当前存储的Claim值

获取UserDisplayName的示例

public static string GetUserDisplayName(this IIdentity identity)
{
    if (identity == null)
    {
        throw new ArgumentNullException(nameof(identity));
    }

    var ci = identity as ClaimsIdentity;
    string userDisplayName = string.Empty;
    if (ci != null)
    {
        userDisplayName = ci.FindFirst(ClaimType.UserDisplayName)?.Value ?? string.Empty;
    }

    return userDisplayName;
}

每次更新个人资料时都想更新“已存储索赔”值的原因,我也更新了“索赔”值。

我该怎么做?

谢谢你

0 个答案:

没有答案