授权所有用户仅一页的最佳实践

时间:2020-03-05 18:41:13  来源:igfitidea点击:

在asp.net网站上授权所有用户访问单个页面的最佳方法是什么。

对于除登录页面和其他页面以外的其他内容,我拒绝所有用户查看网站中的页面。

我们如何使所有用户都可以访问此页面?

解决方案

回答

我一直在使用表单身份验证,并创建必要的GenericIdentity和CustomPrincipal对象,这些对象使我能够利用通常仅通过Windows身份验证获得的User.IsInRole类型函数。

这样,在我的web.config文件中,我可以做类似...

<location path="Login.aspx">
   <system.web>
      <authorization>
         <allow users ="*" />
      </authorization>
   </system.web>
</location>

<location path="ManagementFolder">
   <system.web>
      <authorization>
         <allow roles ="Administrator, Manager" />
      </authorization>
   </system.web>
</location>

回答

我创建了一个处理此类问题的基本"页面"类。如果需要登录才能查看我的所有页面,则可以使用RequiresLogin属性对其进行修饰。如果该属性不存在,则所有人都可以访问该页面。

例子:

<RequiresLogin()> _ 
<RequiresPermission("process")> _
Partial Class DesignReviewEditProgressPage
    Inherits MyPage 'which inherits System.Web.UI.Page and deal with logins itself

    ...
End Class

MyPage类检查哪些属性被标记为其自身,如果存在RequiresLogin,它将把我们转发到登录页面。

我相信这可以进行调整以适合我们自己的问题。