Yur*_*ura 5 c# asp.net-web-api owin
我在我的应用程序中使用 ASP.NET Web API 2、Owin 和 Identity 使用基于令牌的身份验证。
我需要功能允许具有“管理员”角色的用户以另一个(非管理员)用户的身份查看信息(无需密码登录,仅使用另一个用户的用户名)。
我不知道如何在控制器中生成新令牌并将其保存在会话中。
我找到了解决这个问题的办法。这是返回访问令牌的代码示例
/// <summary>
/// Login as another user (using only a username)
/// </summary>
/// <returns>token key</returns>
[Authorize(Roles = "Admin")]
[Route("LoginAs")]
public async Task<IHttpActionResult> GetLoginAs(string userName)
{
if (string.IsNullOrEmpty(userName))
return new System.Web.Http.Results.ResponseMessageResult(
Request.CreateErrorResponse(
(HttpStatusCode)422,
new HttpError("UserName null or empty")));
try
{
var userIdentity = UserManager.FindByNameAsync(userName).Result;
if (userIdentity != null)
{
var oAuthIdentity = await userIdentity.GenerateUserIdentityAsync(UserManager,
Startup.OAuthOptions.AuthenticationType);
var ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());
var currentUtc = new SystemClock().UtcNow;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(60));
string accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
return Ok(accessToken);
}
return BadRequest();
}
catch (Exception ex)
{
return BadRequest();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |