2

我正在使用FormsAuthenticationandASP.NET Memberships and Roles在我的 ASP.NET 项目中。我有一些 aspx 文件只能由经过身份验证的用户查看/访问。我想我可以使用以下两种方法之一来做到这一点。

  1. 配置 web.config 文件。允许具有“管理员”和“成员”角色的用户访问这些 apsx 文件,并拒绝所有其他匿名用户。

  2. 在这些 apsx 文件的 page_load 事件中,只需检查当前用户是否已通过身份验证HttpContext.Current.User.Identity.IsAuthenticated

我想知道这两种方法对于 apsx 文件是否等效。

4

3 回答 3

1

它们不是等价的。方法 1. 仅授予“admin”和“members”角色的访问权限。如果您添加其他角色,他们将无权访问。方法 2 允许任何登录用户访问数据。

我认为首选的方法是根据应该访问它们的角色来组织目录中的 aspx 文件。然后在 web.config 中配置对目录的访问。

于 2012-07-31T17:38:19.477 回答
1

正如其他人所提到的,这并不等同。但是,即使你修改了“2”。要检查角色,这是一种更糟糕的方法,因为您引入了自定义代码来处理可以以标准方式轻松处理的内容。

还要考虑另一种方法,在其中创建一个单独的文件夹,将您的受限页面放在那里并创建一个辅助web.config来包含:

...
<system.web>
   <authorization>   
       <allow roles="admin,members" />
       <deny users="*" />
   </authorization>   
</system.web>

这样,您需要对文件夹、页面、样式、图像中的所有资源进行授权。

于 2012-07-31T17:47:08.107 回答
0

您好,您必须区分身份验证和授权

  1. “HttpContext.Current.User.Identity.IsAuthenticated”是:身份验证

  2. “允许具有'admin'和'members'角色的用户”是:授权,认证后我们执行授权

你可以阅读这篇文章:http ://www.duke.edu/~rob/kerberos/authvauth.html

身份验证是系统可以安全地识别其用户的机制。身份验证系统提供了以下问题的答案:

Who is the user?
Is the user really who he/she represents himself to be? 

授权系统提供了以下问题的答案:

Is user X authorized to access resource R?
Is user X authorized to perform operation P?
Is user X authorized to perform operation P on resource R? 
于 2012-07-31T17:38:34.993 回答