ASP.NET中的授权仅限于限制对页面和目录的访问

时间:2013-02-06 19:20:44

标签: asp.net authorization

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

2 个答案:

答案 0 :(得分:1)

好。你是对的,Roles.IsUserInRole(角色)可用于自定义不同角色的页面。因此,并不是限制对页面和目录的访问。

如果您正在询问如何容纳用户管理员创建的新角色,以及如何让这些页面适应这些新角色......那么,我认为您所谈论的内容的术语是“动态角色” 。如果您想要一个用户决定谁可以访问哪些系统并创建具有不同访问权限的新角色的系统,则需要一个支持动态角色的系统。

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

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

答案 1 :(得分:0)

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

如果应用程序的管理员能够创建新角色,则仅表示这些角色中经过身份验证的(!)用户有权执行更多或其他操作(具体取决于这些角色)。

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

相关问题