0

在过去的几天里,我一直在阅读很多关于 asp.net 成员资格和角色的内容,并尝试在我的项目中使用基于表单的身份验证来实现它。从使用 WSAT 管理用户/角色到在代码中管理 urser/roles/access 规则,我尝试了我在 Internet 上找到的大多数示例。毫无疑问,它提供了强大的功能,而开发人员几乎不需要付出多少努力,但在我看来,asp.net 中的授权仅提供了一种限制对页面和目录的访问的方法。如果我有一个所有用户都可以访问的页面,并且基于用户角色,该页面会为用户提供不同的功能(常见场景 - 就像 SO 正在使用)。虽然我们可以检查Roles.IsUserInRole(role)在我们的代码中并为不同的角色自定义页面,但我们可以再次编写功能以创建更多角色并允许用户(管理员)创建更多角色。一旦应用程序启动并运行,用户(管理员)创建新角色,我们如何在我们的页面中处理这些角色?

4

2 回答 2

1

好。你是对的,Roles.IsUserInRole(role) 可以用来为不同的角色定制页面。因此,这不仅仅是限制对页面和目录的访问。

如果您要问如何适应用户管理员创建的新角色,以及如何让页面适应这些新角色……好吧,我认为您所说的术语是“动态角色”。如果您想要一个用户决定谁可以访问什么并创建具有不同访问权限的新角色的系统,您需要一个支持动态角色的系统。

我已经看到很多尝试手动编写这样一个系统的尝试,但我个人还没有看到一个做得很好的。一些能够做到这一点并且做得很好的系统是商业 CMS(内容管理系统)。如果您确实需要这样的系统,您可能需要查看其中的一些。

ASP.NET 的内置角色管理很简洁,但它确实适用于静态角色情况,其中有(比如)“应付账款文员”、“应收账款文员”和“经理”,虽然人们可能会改变角色,但角色本身以及其中的人需要做什么并没有太大变化。

于 2013-02-06T21:37:01.983 回答
0

RE:Ann L 对她自己的回答的评论(我不能写评论,因为我还没有足够的声望点)。

如果应用程序的管理员能够创建新角色,这仅仅意味着这些角色中经过身份验证的(!)用户有权做更多或其他事情(取决于这些角色)。

我不认为让用户(管理员)动态创建角色会是一个糟糕的安全实践。在我看来,不良的安全做法是那些使恶意用户能够造成损害、窃取数据或劫持应用程序的做法。这些不良做法使人们能够以您不希望他们的方式进行身份验证。

于 2013-05-08T09:11:47.940 回答