web.config和身份验证,授权,位置

时间:2011-10-24 02:29:13

标签: c# asp.net

我正在寻找创建一个web.config文件,我对哪个标签的顺序感到有点困惑。我有两个角色:测试人员和预览员。

以下是我要做的事情:

1)使用带有URL“Login.aspx”的表单authentification标签

2)使用location标记表示目录/ AppPages和/ AppServices只能供测试人员访问(即deny *,?,预览器和仅允许认证的测试人员,否认其他人)

3)使用位置标记表示目录/脚本和/样式只能供测试人员和预览人员访问并拒绝其他人

4)如何制作,以便所有试图查看/ AppPages或/ AppServices页面的预览者都被重新路由到自定义页面。

我有以下web.config文件:

<system.web>

  <connectionStrings>
    ...............
  </connectionStrings>

  <roleManager enabled="true"/>

  <authentication mode="Forms">    
     <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">
     </forms>
  </authentication>

  <authorization>
     <deny users="?" />
  </authorization>

  <location path="AppPages"> //same for AppServices
    <system.web>
      <authorization>
        <deny users="*" />
            <deny users="?"/>
        <allow roles="tester" />
        <deny roles="previewers" />
      </authorization>
    </system.web
  </location>

  <location path="Scripts"> //same for Styles
    <system.web>
      <authorization>
          <allow roles="previewers" />
          <allow roles="tester" />
          <deny users="?"/>
      </authorization>
    </system.web>
  </location>

</system.web>

我要做的是将所有用户重定向到预览页面,如果用户以测试人员身份登录,那么他将能够转到应用页面,而预览者则不会。

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

关于不同的登录页面...据我所知,在asp.net中没有直接简单的方法来实现它。你可以采取各种途径来实现它:-)这里有一个概述的帖子一个相当简单的解决方案.. http://forums.asp.net/t/1348477.aspx

就授权规则而言,它有点像带有中断的switch语句。当访问站点时应用于当前用户状态的第一个规则是应用的,并且它将停止处理...例如此

<deny users="*" />
<deny users="?"/>
<allow roles="tester" />
<deny roles="previewers" />

应该去

<deny users="?"/>
<allow roles="tester" />
<deny users="*" />

否则,无论如何,第一行都会拒绝所有人。

http://msdn.microsoft.com/en-us/magazine/cc301390.aspx