【问题标题】:How do I assign a Role to an OpenId user for an ASP.NET MVC site?如何为 ASP.NET MVC 站点的 OpenId 用户分配角色?
【发布时间】:2010-10-30 16:23:17
【问题描述】:

我在我的 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");

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

更新

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

想法(与完整的 RoleProvider 类相比?)

【问题讨论】:

    标签: asp.net-mvc authorization roles dotnetopenauth


    【解决方案1】:

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

    【讨论】:

    • 天哪!看起来工作量很大 :( 我希望手动将角色添加到 IIdentity .. 就这么简单 :(
    • 还不错,尤其是如果您的角色存储是 SQL。您实际上可能能够使用现有的 ASP.NET SQL 角色提供程序或对其进行扩展。即使是自己写也没有那么糟糕。如果我记得,方法的数量可能令人望而生畏,但它们并不是特别复杂。
    • 我同意方法的数量令人生畏,但并不复杂。这只是事物的大小,仅确定用户是否为管理员。在我的用户表中,我有一个位字段。我不会扮演多个角色。这就是为什么我有点……害怕。
    【解决方案2】:

    看看at this article

    它展示了一种将 openid 与成员角色和配置文件集成的简单方法。希望能帮上忙。

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 2015-06-10
      • 2016-01-30
      • 2014-05-05
      • 2019-05-30
      • 1970-01-01
      • 2015-08-01
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多