ahmed_sa Ответов: 1

Как передать значение от действия к действию в веб-api ASP.NET ядро 2.2 ?


How to pass value from action to action on web api  asp.net core 2.2 ?

я возвращаю данные из действия, и мне нужно, чтобы пользователь эти данные возвращал на другое действие, так что я делаю, чтобы сделать это, пожалуйста ?
мне нужно получить строковое значение токена доступа, возвращаемое из действия, и повторно использовать его внутри
еще одно действие, чтобы преобразовать его в файл json ?
Как это сделать, пожалуйста ?

Что я уже пробовал:

[HttpPost(Contracts.ApiRoutes.Login.UserLogin)]
        public  IActionResult PostUserLogins([FromBody]Users user)
        {
             user.Branches = branchesList;
                user.LoginTime = DateTime.Now.ToString();
                user.AccessToken = ?????? how to get it from access token action;
                JsonResults = JsonConvert.SerializeObject(user);
        }



[AllowAnonymous]
[HttpGet("GetToken")]
public IActionResult GetToken(string user, string password)
{
var jwt = new JwtToken();
//Secret ID of the User from Database
var sid = GetFromDB(user,password);

List<Claim> claimslist = new List<Claim>()
{
new Claim(ClaimTypes.Sid, sid ),
new Claim(ClaimTypes.Role, role),
new Claim(ClaimTypes.Role, "Doctor")
};

var retval = new JwtSecurityToken(
issuer: "https://www.mysupervwebsite.com",
audience: "https://www.mysupervwebsite.com",
claims: claimlist, 
expires: DateTime.UtcNow.AddSeconds(120),
signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.Utf8.GetBytes("MySuperSecretPassword")), SecurityAlgorithms.HmacSha256)

);

string token = new JwtSecurityTokenHandler().WriteToken(retval);


return Ok(token);

}

ahmed_sa

может ли кто-нибудь помочь мне

1 Ответов

Рейтинг:
0

Richard Deeming

Два варианта:

1) Вызовите существующий метод, приведите результат к OkObjectResult, и бросил Value собственность на а string:

IActionResult tokenResult = GetToken(username, password);
OkObjectResult okResult = (OkObjectResult)tokenResult;
user.AccessToken = (string)okResult.Value;
Класс OkObjectResult(Object) (Microsoft.AspNetCore.В MVC) | Майкрософт Документы[^]

2) Рефакторинг GetToken действие для вызова другого метода, возвращающего строку токена, и вызова этого метода:
private string GetTokenCore(string user, string password)
{
    var jwt = new JwtToken();
    ...
    string token = new JwtSecurityTokenHandler().WriteToken(retval);
    return token;
}

[AllowAnonymous]
[HttpGet("GetToken")]
public IActionResult GetToken(string user, string password)
{
    return Ok(GetTokenCore(user, password));
}

[HttpPost(Contracts.ApiRoutes.Login.UserLogin)]
public  IActionResult PostUserLogins([FromBody]Users user)
{
    ...
    user.AccessToken = GetTokenCore(username, password);
    ...
}