使用ASP.NET成员资格将用户重定向到多个登录页面

时间:2009-02-08 16:34:50

标签: asp.net login asp.net-membership

根据用户所在的文件夹将用户重定向到登录页面。我有一个带有根目录的Web应用程序,供所有用户和管理站点使用。

对于需要网站身份验证功能的用户,他们需要登录并重定向到root / login.aspx。但是,当管理员需要登录网站的root / admin /部分时,我希望将它们重定向到root / admin / login.aspx上的登录表单

  <configuration>
      <appSettings/>
      <connectionStrings/>
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </configuration>

我在root / admin目录中有这个文件。我尝试添加以下行,但它给出了错误。

  <authentication>
    <forms defaultUrl="default.aspx" loginUrl="default.aspx"></forms>
  </authentication>

基本上我试图覆盖主应用程序中存在的defaulturl和loginurl。

1 个答案:

答案 0 :(得分:9)

您需要在web.config中使用<location>元素。您可以使用<location>标记将授权设置应用于单个文件或目录。

<location path="/root">
  <system.web>
      <authentication mode="Forms" >
        <forms name="LoginForm" defaultUrl="default.aspx" 
        loginUrl="/root/login.aspx" protection="Encryption" 
        timeout="30" path="/"/>
      </authentication>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>
<location path="/root/admin">
  <system.web>
    <authentication mode="Forms" >
      <forms name="formName" defaultUrl="login.aspx" 
      loginUrl="/root/admin/login.aspx" protection="Encryption"
      timeout="30" path="/"/>
    </authentication>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

MSDN

  

对于集中管理,   设置可以应用于   Machine.config文件。设置中   Machine.config文件定义   机器范围的政策也可以   用于应用特定于应用程序   使用<location>进行配置   元素。开发人员可以提供   应用程序配置文件到   覆盖机器策略的各个方面。   对于ASP.NET Web应用程序,a   Web.config文件位于   应用程序的虚拟根目录   并且可选地在子目录中   在虚拟根目录下。

如果您想要1个登录位置和不同的访问级别,您可能需要使用roles

<location path="/root">
  <system.web>
    <authorization>
       <allow roles="admin,root" />/*admin, root is allowed */
       <deny users="*" /> 
   </authorization>
  <system.web>
</location>  

<location path="/root/admin">
  <system.web>
    <authorization>
       <allow roles="admin" />/*admin is allowed */
       <deny users="*" /> 
   </authorization>
  <system.web>
</location>  
  

用户可以属于多个   角色。例如,如果您的网站是   讨论论坛,有些用户可能会   在会员和...的作用   版主。您可以定义每个角色   拥有不同的特权   站点以及同时担任这两个角色的用户   然后会有两套   特权。

     

您可以访问所有这些元素   代码级别,如果你愿意   操纵角色/身份验证   编程

Page.User.Identity.Name
Page.User.Identity.IsAuthenticated
Page.User.Identity.AuthenticationType
Page.User.IsInRole("string");

<强>教程

4 Guys From Rolla Tutorial

The ASP.NET web.config File Demystified