【问题标题】:Authentication in ASP.NET using FormsAuthentication使用 FormsAuthentication 在 ASP.NET 中进行身份验证
【发布时间】:2012-07-31 17:35:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

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

    【讨论】:

    • 对于方法 2,我可以使用 HttpContext.Current.User.IsInRole 检查用户是否具有角色“管理员”或“成员”。现在是否等同于方法一?
    • 是的,检查 HttpContext.Current.User.IsInRole 将使这些方法等效。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      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? 
      

      【讨论】:

        猜你喜欢
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        相关资源
        最近更新 更多