【问题标题】:Restrict access to some .aspx pages限制对某些 .aspx 页面的访问
【发布时间】:2011-05-08 20:55:31
【问题描述】:

我的 asp.net Web 应用程序中有一些只有管理员才能看到的 .aspx 页面和一些所有用户都可以看到的 .aspx 页面。我如何限制普通用户访问用于管理员的页面?

此外,我没有实现来自 asp.net 的授权,我的意思是我自己使用会话和标志变量来实现身份验证。在这种情况下,如何根据权限将内容限制为用户?

【问题讨论】:

    标签: c# asp.net authorization privileges


    【解决方案1】:

    将这些页面放在它们自己的目录中,并在该目录中使用web.config 来限制对它们的访问。

    <configuration>
       <system.web>
          <authorization>
             <allow roles="Admins"/>
             <deny users="*"/>
          </authorization>
       </system.web>
    </configuration>
    

    不要重新发明轮子!

    【讨论】:

      【解决方案2】:

      我可能会创建一个自定义函数,当然是公共方法,其中包含基于角色的所有逻辑 [正如您提到的,您不想使用 asp.net 的成员资格功能] 以允许拒绝用户访问页面。此方法将检查页面的用户资格,为了更好的逻辑,您可以在 web.Config 中保留所有页面的密钥。

      您可以在

      中创建密钥
         <appsetting>
      
      
       <add key="Page1" value="ViewOrders.aspx"/>
      <add key="Page2" value="DeleteOrders.aspx"/>
      

      现在,您可以在方法中创建一个 for/foreach 循环来迭代页面名称的键值。我这样说是因为您以后添加页面并相应地分配它们会更容易。

      编辑

      也许,你想看看这个http://mywsat.codeplex.com/

      【讨论】:

      • 所有页面的键是什么意思??请您详细说明一下好吗?
      • @user653622 我添加了一个指向我的答案的链接,我发现它对你很有用。
      • 我不明白,你能告诉我这个公共函数怎么写吗?当用户请求特定页面时,如何使其首先执行?你能给我发一些示例代码吗?
      【解决方案3】:

      如果您使用自己的,您可能想要创建一个自定义角色提供程序,并让它从会话中为用户返回角色,这可能能够弥合这两个差距...

      HTH。

      【讨论】:

      • 您能帮我详细说明一下您的想法吗?
      • 如果启用某些功能,系统中的角色来自角色提供程序。您可以创建一个继承自 System.Web.Security.RoleProvider 的自定义角色提供程序。在这个类中,当访问用户的角色时,返回从会话中给定的角色。
      【解决方案4】:

      知道这有点旧,但以防其他人使用会员资格。在你的 web.config 中使用它:

      <configuration>
        <!-- Only administrators may access AdminTools.aspx -->
        <location path="AdminTools.aspx">
          <system.web>
            <authorization>
              <allow roles="Administrators" />
              <deny users="*" />
            </authorization>
          </system.web>
        </location>
      </configuration>
      

      参考:使用 C# VB 构建您自己的 ASP.NET 2.0 网站,第二版 克里斯蒂安·戴尔,扎克·鲁瓦尔卡巴

      【讨论】:

        猜你喜欢
        • 2022-11-26
        • 1970-01-01
        • 2021-05-17
        • 2023-04-09
        • 2020-12-01
        • 1970-01-01
        • 2011-01-02
        • 2016-07-07
        相关资源
        最近更新 更多