代码之家  ›  专栏  ›  技术社区  ›  jcolebrand

如何在ASP.NET中使用SQL存储而不是web.config实现页面授权?

  •  2
  • jcolebrand  · 技术社区  · 15 年前

    例如,我们现在这样做的方式是:(在web.config中)

    <location path="somePath">
     <system.web>
      <authorization>
       <allow roles="approvedRoles"/>
       <deny users="*"/>
      </authorization>
     </system.web>
    </location>
    

    我要做的是将这些信息存储在SQL中的某个地方,这样我们就可以更容易地操作这些信息。但是我们希望保持与web.config中的信息提供的功能相同,就像我们可以使用sqlRoleProvider而不是应用程序中的硬编码角色一样。换句话说,如果用户当前试图转到“somepath”,而他们不是“approvedRoles”的成员,那么他们将被重定向回default.aspx,如果他们是“approvedRoles”的成员,那么他们将得到页面。我想做同样的事情,但是不使用web.config作为授权机制。

    因此,我不想问的是如何定义角色,或者如何处理登录到数据库的操作,但具体来说,我应该如何将上述信息存储在SQL而不是web.config中。实际上,我现在要“除了web.config以外的任何地方”。

    有什么想法吗?是否可以使用“provider”类?我只是在寻找关于继承什么的指针,也许还有一些TechNet文档。在这方面,我的googlefoo是缺乏的,因为我真的不知道该指向哪里。我真的只是在找阿兹曼吗?这个通过SQL的位置授权是否已经在某个地方的默认aspnetdb中定义,而我没有它?

    关于那件事,这个问题已经被问过了吗?我错过了?你会用谷歌搜索什么?

    3 回复  |  直到 11 年前
        1
  •  2
  •   Daniel Coffman    15 年前

    您可以编写自己的授权控件,手动检查当前用户所处的角色,并将其与页面列表及其各自的角色津贴进行比较,然后将此控件嵌入到所有页面中。

        2
  •  1
  •   BC.    15 年前

    最好处理httpapplication.authorizeRequest事件。此时,将设置httpcontext.user对象,您可以执行所需的任何分析,例如根据httpcontext.user.isinRole和当前请求路径检查数据库表。

        3
  •  1
  •   AminM LordDoskias    11 年前

    自WindowsServer2008和SQL Server2008以来,Azman可以将SQL数据库作为数据存储。如果我没有任何附加到需要迁移到新服务器的遗留应用程序,我将和Azman一起使用。

    Connect to an SQL-based Authorization Store