У меня есть мой token со следующей информацией.
Сейчас, у Площади может быть несколько площадей, до 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.
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
});
}
Поскольку я вижу, ты называешь в нее 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.
типов Привета!