小编dul*_*eme的帖子

C# Web API 更新声明

我制作 asp.net web api 项目。
客户端程序是winform使用HttpClient。
当用户登录时,我将用户语言分配给声明。

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    .......
    var identity = new ClaimsIdentity(context.Options.AuthenticationType);
                identity.AddClaim(new Claim("UserId", context.UserName));
                identity.AddClaim(new Claim("role", "user"));
                identity.AddClaim(new Claim("Language", forms["language"]));
    context.Validated(identity);
   ......
}
Run Code Online (Sandbox Code Playgroud)

我需要更改索赔运行时的语言。所以我做了更改语言API。

    [HttpGet]
    [APIAuthorize]
    public HttpResponseMessage ChangeLanguage(Language language)
    {
        User.AddUpdateClaim("Language", language.ToString());

        return Request.CreateResponse<IResult>(HttpStatusCode.OK, "OK");
    }
Run Code Online (Sandbox Code Playgroud)

并进行 ClaimsIdentity 扩展。

public static class ClaimsIdentityExtensions
{
    public static void AddUpdateClaim(this IPrincipal currentPrincipal, string key, string value)
    {
        var identity = new ClaimsIdentity(currentPrincipal.Identity);            
        // check for existing claim and remove it
        var existingClaim …
Run Code Online (Sandbox Code Playgroud)

c# asp.net claims-based-identity asp.net-web-api asp.net-web-api2

5
推荐指数
0
解决办法
1373
查看次数