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

Tim*_*ung 2 asp.net asp.net-membership login

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

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

  <configuration>
      <appSettings/>
      <connectionStrings/>
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </configuration>
Run Code Online (Sandbox Code Playgroud)

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

  <authentication>
    <forms defaultUrl="default.aspx" loginUrl="default.aspx"></forms>
  </authentication>
Run Code Online (Sandbox Code Playgroud)

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

cgr*_*eno 9

您需要<location>在web.config中使用该元素.您可以使用<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>
Run Code Online (Sandbox Code Playgroud)

MSDN

对于集中管理,可以在Machine.config文件中应用设置.Machine.config文件中的设置定义了计算机范围的策略,还可以用于使用<location> 元素应用特定于应用程序的配置.开发人员可以提供应用程序配置文件来覆盖计算机策略的各个方面.对于ASP.NET Web应用程序,Web.config文件位于应用程序的虚拟根目录中,也可以位于虚拟根目录下的子目录中.

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

<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>  
Run Code Online (Sandbox Code Playgroud)

用户可以属于多个角色.例如,如果您的站点是讨论论坛,则某些用户可能同时担任成员和主持人.您可以将每个角色定义为在站点上具有不同的权限,并且同时具有这两个角色的用户将具有这两组权限.

如果要以编程方式操作角色/身份验证,则可以在代码级别访问所有这些元素

Page.User.Identity.Name
Page.User.Identity.IsAuthenticated
Page.User.Identity.AuthenticationType
Page.User.IsInRole("string");
Run Code Online (Sandbox Code Playgroud)

教程

来自Rolla教程的4个人

ASP.NET web.config文件揭秘