【问题标题】:custom authorization - roles done, what about users?自定义授权 - 角色完成,用户呢?
【发布时间】:2011-10-09 14:37:49
【问题描述】:

我正在从集成/windows 身份验证系统(我在 web.config 的授权部分和 web.sitemap 以及使用 user.identity.name 的各种每个用户功能中使用 windows 组)迁移到SSO 解决方案,通过 http 标头提供经过身份验证的详细信息。

我创建了一个非常简单的自定义 RoleProvider(覆盖 IsUserInRole 和 GetRolesForUser),它非常适用于 web.config 的“允许角色”部分和 web.sitemap 的角色部分。

我想对授权的“用户”部分做同样的事情。我该怎么做呢?是通过覆盖不同的提供者吗?它还会影响 user.identity.name 返回的内容吗?

感谢您为我指明正确的方向:)

编辑 - 为 Jay。

请注意,这可能是一个 hacky 和缺乏经验的修复,但它适合我的目的。在 http://msdn.microsoft.com/en-us/library/8fw7xh74(v=vs.100).aspx 之后,您可以创建一个包含所有必需函数定义的类,并根据需要返回 false/空字符串数组。

我实现的唯一函数是 IsUserInRole 和 GetRolesForUser。后者只是简单地连接到 Request.ServerVariables 以检查适当的 HTTP 标头,并根据需要将它们格式化为字符串数组。 IsUserInRole 只是将提供的字符串与 GetRolesForUser 返回的字符串数组进行匹配。

之后,我只是在web.config中引用了上面的内容

<roleManager defaultProvider="myroleprov" enabled="true">
 <providers>
  <clear/>
  <add name="myroleprov" type="myApp.CustomProviders.myroleprov" applicationName="myApp"/>
 </providers>
</roleManager>

我想就这样吧?希望对您有所帮助。

【问题讨论】:

  • 您能否分享您如何实现自定义 RoleProvider 的代码?
  • 没问题,查看编辑。
  • 非常相似的是在添加角色提供者名称部分中缺少连接字符串欢呼,您的似乎不可见,也许仅适用于 MVC4?

标签: asp.net authorization


【解决方案1】:

【讨论】:

  • 我快速浏览了一下,因为它似乎在某种程度上反映了角色提供者 - 但我不确定我需要重写哪些方法(我会忽略大多数方法)。我在实现 iprincipal 和 iidentity 方面取得了一些成功——在 global.asax Application_AuthenticateRequest 例程中使用它们。这个固定的 user.identity.name 但似乎不适用于 web.config/sitemap...所以我会返回会员资格提供商,谢谢!
  • 我已经实现了 getUser 函数,只要我可以创建membershipprovider,它就可以工作,并使用getUser() 返回一个具有适当用户名的membershipuser - 但是这对我的web.sitemap 的访问规则没有影响为用户。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2020-04-03
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多