Получать стоимость моего token с netCore 2.1

У меня есть мой token со следующей информацией.

Captura de TOEKN

Сейчас, у Площади может быть несколько площадей, до 3 или 4. Также workstation.

Я, что я хочу, он состоит в том, чтобы получать эти договоренности и распределять вас в переменные. Я имею мало недель с netCore, даже не, как справляются много вещей. Даже не правильные способы это делать.

Я нуждаюсь в том, чтобы получить эту стоимость посылать их как параметры неких маршрутов API.

Я благодарен за любую ориентацию.

Я оставляю код, как я добавляю claims к token.

private async Task LoginBuildTokenAsync(UserModel userInfo, string[] ciltsPathByUser, AreasByUserOnToken[] areasByUser, WorkstationsByUserOnToken[] workstationsByUser)
        {
            //Este metodo se lanza cuando queremos crear roles o asignar usuarios a ciertos roles.
            //await CreateAndAssignRoles( _serviceProvider);

            List claims = new List();

            claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) );
            claims.Add(new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.Email));
            claims.Add(new Claim("UserNumber", userInfo.UserNumber.ToString()));
            claims.Add(new Claim("UserName", userInfo.UserName.ToString()));
            claims.Add(new Claim("UserRole", userInfo.Role));

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Llave_super_secreta"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expiration = DateTime.UtcNow.AddHours(1);

            JwtSecurityToken token = new JwtSecurityToken(
               issuer: "cosascosas.com",
               audience: "cosascosas.com",
               claims: claims,
               expires: expiration,
               signingCredentials: creds);

            token.Payload["CiltsPath"] = ciltsPathByUser;
            token.Payload["Area"] = areasByUser;
            token.Payload["Workstation"] = workstationsByUser;


            Console.Out.WriteLine();
            return Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                expiration = expiration
            });
        }

Update: Это - то, что прибывает ко мне в debug.

introducir la descripción de la imagen aquí

Update2: Как они предложили мне в комментариях, я добавляю мои areas/workstation/ciltspath, как json, я последовательно преобразовываю их и он присоединяется. Вещь состоит в том, что он остается, не появляясь в моих claims. Я добавляю изображение как эта прибывая и код, как я добавляю их.

private async Task LoginBuildTokenAsync(UserModel userInfo, string[] ciltsPathByUser, AreasByUserOnToken[] areasByUser, WorkstationsByUserOnToken[] workstationsByUser)
        {
            //Este metodo se lanza cuando queremos crear roles o asignar usuarios a ciertos roles.
            //await CreateAndAssignRoles( _serviceProvider);



            List claims = new List();

            claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) );
            claims.Add(new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.Email));
            claims.Add(new Claim("UserNumber", userInfo.UserNumber.ToString()));
            claims.Add(new Claim("UserName", userInfo.UserName.ToString()));
            claims.Add(new Claim("UserRole", userInfo.Role));
            claims.Add(new Claim("Area", new JavaScriptSerializer().Serialize(areasByUser)));
            claims.Add(new Claim("Workstation", new JavaScriptSerializer().Serialize(workstationsByUser)));
            claims.Add(new Claim("Ciltpath", new JavaScriptSerializer().Serialize(ciltsPathByUser)));

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Llave_super_secreta"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expiration = DateTime.UtcNow.AddHours(1);

            JwtSecurityToken token = new JwtSecurityToken(
               issuer: "cosas.com",
               audience: "cosas.com",
               claims: claims,
               expires: expiration,
               signingCredentials: creds);

            //token.Payload["CiltsPath"] = ciltsPathByUser;
            //token.Payload["Area"] = areasByUser;
            //token.Payload["Workstation"] = workstationsByUser;

            return Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                expiration = expiration
        });
        }

Apesar de que agregue el claim con el json, sigue sin aparecer.

2
задан 02.08.2019, 23:22
1 ответ

Поскольку я вижу, ты называешь в нее funciГіn LoginBuildTokenAsync, где добавляют Claims внутри action login и потом проверяют HttContext. Я не думаю, что функционирует так, так как HttpContext - HttpContext настоящего request, у него будет token, который ты вооружаешь.

Tenes, которые делать login и в Chrome dev tools или postman (завися, что ты использовал) берет token, и проверь это в jwt.io. Если у него есть необходимый уже этот info. Если эти в Вебе, несмотря на то, что он делает любым другим request весь этот info, он должен идти в request, если ты используешь Postman, скопируй это и ponelo в ней pestaГ±a authentication.

типов Привета!

0
ответ дан 01.12.2019, 22:36