как включить роль в возвращаемый токен JWT? - PullRequest
0 голосов
/ 17 апреля 2020

Что я имею в виду при навигации по приложению, я хочу сохранить токен на локальном хосте вместе с именем роли и проверить, есть ли у пользователей доступ к определенной ссылке. Это так работает? с Authgard в Angular 8 ?. Можете ли вы дать мне некоторое представление о навигации по приложению с ролью из Identity (которая встроена в ASP. net core 3.1).

login

  // POST api/auth/login
        [HttpPost("login")]
        public async Task<IActionResult> Post([FromBody]CredentialsViewModel credentials)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var identity = await GetClaimsIdentity(credentials.UserName, credentials.Password);
            if (identity == null)
            {
                //return null;
                return BadRequest(Error.AddErrorToModelState("login_failure", "Invalid username or password.", ModelState));
            }

            var jwt = await Tokens.GenerateJwt(identity, _jwtFactory, credentials.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented });
            return new OkObjectResult(jwt);
        }

Метод создания токена

       public static async Task<string> GenerateJwt(ClaimsIdentity identity, IJwtFactory jwtFactory, string userName, JwtIssuerOptions jwtOptions, JsonSerializerSettings serializerSettings)
            {
                var response = new
                {
                    id = identity.Claims.Single(c => c.Type == "id").Value,
                   //probably here I want to send the role too!!
                    auth_token = await jwtFactory.GenerateEncodedToken(userName, identity),
                    expires_in = (int)jwtOptions.ValidFor.TotalSeconds
                };

                return JsonConvert.SerializeObject(response, serializerSettings);
            }
        }


1 Ответ

0 голосов
/ 17 апреля 2020

Вам необходимо добавить информацию о претензиях при создании вашего JWT.

Вот пример

И еще один:

1 часть (как реализовать JWT) , 2 часть (о претензиях здесь)

...