当我们使用 ASP.NET WebApi 进行身份验证时返回用户的角色

问题描述 投票:0回答:1

我们正在使用 ASP.NET Web 应用程序和个人用户帐户来学习这个优秀教程(存档于 Wayback Machine

要进行身份验证并获取不记名令牌,我们发布以下内容:

Request URL:http://localhost:3067/token grant_type=password&username=alice&password=password123
正如预期,令牌提供者返回此:

{ "access_token":"rkg5dP_Lyg ... TIHLD2xIRJ", "token_type":"bearer", "expires_in":1209599, "userName":"Alice", ".issued":"Mon, 03 Feb 2014 19:06:32 GMT", ".expires":"Mon, 17 Feb 2014 19:06:32 GMT" }
这很好。现在,我们如何向 JSON 响应添加角色属性?

"userRole":"admin"
    
asp.net authentication asp.net-web-api roles membership
1个回答
5
投票
如果您在 Visual Studio 中使用默认项目模板,那么您所需要做的就是将 userRole 添加到调用 Authentication.SignIn 时传递的 AuthenticationProperties 数组中。

因此,如果您仍在使用 ApplicationOAuthProvider 类,请将 userRole 添加到 CreateProperties 方法中的属性字典中,如下所示:

public static AuthenticationProperties CreateProperties(string userName, string userRole) { IDictionary<string, string> data = new Dictionary<string, string> { { "userName", userName }, { "userRole", userRole } }; return new AuthenticationProperties(data); }

然后,每当您调用 Authentication.SignIn 时,您都会向其传递新的属性列表,并且 userRole 也应该显示。 对于令牌身份验证,您需要将其添加到 ApplicationOAuthProvider 类的 GrantResourceOwnerCrentials 方法中,对于常规 cookie 身份验证,需要在 AccountController 的 GetExternalLogin 方法中进行修改。

© www.soinside.com 2019 - 2024. All rights reserved.