【发布时间】: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