Как отправить роль из ASP.NET Web API при аутентификации на основе токенов и установить ее в ASP.NET MVC - PullRequest
0 голосов
/ 26 мая 2019

Как я могу добавить роль к ответу, используя идентификацию asp.net, когда пользователь аутентифицируется?

Я работаю над проектом, в котором мне нужно аутентифицировать пользователя.Я построил API в ASP.NET и использую для аутентификации ASP.NET Framework.

Теперь мне нужно знать, какой пользователь вошел в систему, поэтому я назначил роли пользователям.Я не знаю, как отправить роль пользователя вместе с токеном на предъявителя.Я искал решение, но не нашел его.

Буду признателен за любую помощь.

Это код, который взаимодействует с API.

public ActionResult Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    var getTokenUrl = Wedding_Hall.AppSettings.TOKEN_URI;

    using (HttpClient httpClient = new HttpClient())
    {
        HttpContent content = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username", model.Email),
                    new KeyValuePair<string, string>("password", model.Password)
                });

        HttpResponseMessage result = httpClient.PostAsync(getTokenUrl, content).Result;

        string resultContent = result.Content.ReadAsStringAsync().Result;

        if (result.IsSuccessStatusCode)
        {
            var token = JsonConvert.DeserializeObject<Token>(resultContent);

            AuthenticationProperties options = new AuthenticationProperties();

            options.AllowRefresh = true;
            options.IsPersistent = true;
            options.ExpiresUtc = DateTime.UtcNow.AddSeconds(int.Parse(token.expires_in));

            var claims = new[]
                    {
                         new Claim(ClaimTypes.Name, model.Email),

                         new Claim("AcessToken", string.Format("Bearer {0}", token.access_token)),
                    };

            var identity = new ClaimsIdentity(claims, "ApplicationCookie");

            Request.GetOwinContext().Authentication.SignIn(options, identity);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", "Invalid Login Attempt");
            return View("Login", model);
        }
    }
}
...