如何在 ASP.NET Web 应用程序上使用表单身份验证最好地处理基于角色的权限?
我正在使用 ASP.NET 登录控件 和 表单身份验证,用于 ASP.NET Web 应用程序的成员资格/凭据。
我有两个角色:
- 用户
- 管理员
我希望四个不同的组可以查看页面:
- 每个人(默认、帮助)
- 匿名(创建用户、登录、密码恢复)
- 用户< em>(ChangePassword、DataEntry)
- 管理员(报告)
扩展 ASP.NET HOW DO I 视频系列:成员身份和角色,我已将这些页面文件放入此类文件夹中:
我使用 ASP.NET 网站管理工具为每个文件夹设置访问规则。
它有效,但对我来说似乎很笨拙,并且会产生问题 当 Login.aspx 不在根目录 且使用 Login.aspx 的 ReturnUrl 参数。
有一个更好的方法吗? 是否有一种简单的方法可以在页面级别而不是文件夹级别设置权限?
I'm using the ASP.NET Login Controls and Forms Authentication for membership/credentials for an ASP.NET web application.
I've got two roles:
- Users
- Administrators
I want pages to be viewable by four different groups:
- Everyone (Default, Help)
- Anonymous (CreateUser, Login, PasswordRecovery)
- Users (ChangePassword, DataEntry)
- Administrators (Report)
Expanding on the example in the ASP.NET HOW DO I Video Series: Membership and Roles, I've put those page files into such folders:
And I used the ASP.NET Web Site Administration Tool to set up access rules for each folder.
It works but seems kludgy to me and it creates issues when Login.aspx is not at the root and with the ReturnUrl parameter of Login.aspx.
Is there a better way to do this? Is there perhaps a simple way I can set permissions at the page level rather than at the folder level?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在母版页中,我定义了一个用于切换安全检查的公共属性,默认为 true。 我还声明了一个字符串,它是 ; 该页面所需的角色分隔列表。
在我的母版页的页面加载中,我执行以下操作
,您还必须将其放在
页面顶部,以便您可以访问母版页的扩展属性
In the master page I define a public property that toggles security checking, defaulted to true. I also declare a string that is a ; delimited list of roles needed for that page.
in the page load of my master page I do the following
also you'll have to put
at the top of your pages so you can access the extended properties of your master page
我的脑海中浮现出几个解决方案。
A couple solutions off the top of my head.
我过去使用过的一个解决方案是:
这允许自定义每个页面,而无需在 web.config 中添加大量内容来控制每个页面。
One solution I've used in the past is this:
This allows each page to be customized without you having to put tons of stuff in your web.config to control each page.