如何为ASP.NET MVC站点的OpenId用户分配角色?

Pur*_*ome 6 asp.net-mvc authorization roles dotnetopenauth

我在ASP.NET MVC应用程序中使用OpenId.工作得很好:)一旦我有用户的OpenId标识符(一旦他们经过身份验证并返回到我的网站),我加载用户数据(获取显示名称等).

从这里开始,我也知道他们的角色.

我不确定如何将角色分配给当前的Forms.Identity.

这是我的代码......

// Load User...
var user = GetUsers().ByOpenIdIdentifier("blahblahblahbl....");

// Here means we have a user AND all the roles, for that user.

// Forms Authenticate and Redirect.
FormsAuthentication.SetAuthCookie(user.DisplayName, true);
return RedirectToAction("Index", "Home");
Run Code Online (Sandbox Code Playgroud)

如何更改此代码,以便经过身份验证的用户也分配了他们的角色?

更新

我偶然发现了这篇关于制作自定义Authorize属性的网络帖子.请注意他们如何检查会话中存在的登录用户角色?此外,角色是一个枚举:)这是非常时髦的,如果你问我:)很好,很简单.

思考(与完整的基于RoleProvider类的完整相比?)

tva*_*son 4

您需要编写自己的RoleProvider并将其连接到 web.config 文件中。您的 RoleProvider 将获取用户名并找出他们的角色。 IPrincipal.IsInRole使用配置的 RoleProvider 来确定角色成员资格。