- <location path="Admin">
- <system.web>
- <authorization>
- <allow roles="Admin"/>
- <deny users="*"/>
- </authorization>
- </system.web>
- </location>
这样就不必一个一个页面单独设置了,还可以在目录中创建一个web.config来指定目录的访问规则,请参考后面的示例。
在前面的示例中,有一点要特别注意的是:
1. allow和deny之间的顺序一定不能写错了,UrlAuthorizationModule将按这个顺序依次判断。
2. 如果某个资源只允许某类用户访问,那么最后的一条规则一定是 <deny users="*" />
在allow和deny的配置中,我们可以在一条规则中指定多个用户:
1. 使用users属性,值为逗号分隔的用户名列表。
2. 使用roles属性,值为逗号分隔的角色列表。
3. 问号 (?) 表示匿名用户。
4. 星号 (*) 表示所有用户。
登录页不能正常显示的问题
有时候,我们可能要开发一个内部使用的网站程序,这类网站程序要求 禁止匿名用户的访问,即:所有使用者必须先登录才能访问。因此,我们通常会在网站根目录下的web.config中这样设置:
- <authorization>
- <deny users="?"/>
- </authorization>
对于我们的示例,我们也可以这样设置。此时在浏览器打开页面时,呈现效果如下:
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/4B151245999.png" />
从图片中可以看出:页面的样式显示不正确,最下边还多出了一行文字。
这个页面的完整代码是这样的(它引用了一个CSS文件和一个JS文件): 498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/11151246337.png" />
- <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>FormsAuthentication DEMO - http://www.cnblogs.com/fish-li/</title>
- <link type="text/css" rel="Stylesheet" href="css/StyleSheet.css" />
- </head>
- <body>
- <fieldset><legend>普通登录</legend><form action="<%= Request.RawUrl %>" method="post">
- 登录名:<input type="text" name="loginName" style="width: 200px" value="Fish" />
- <input type="submit" name="NormalLogin" value="登录" />
- </form></fieldset>
- <fieldset><legend>用户状态</legend><form action="<%= Request.RawUrl %>" method="post">
- <% if( Request.IsAuthenticated ) { %>
- 当前用户已登录,登录名:<%= Context.User.Identity.Name.HtmlEncode() %> <br />
- <% var user = Context.User as MyFormsPrincipal<UserInfo>; %>
- <% if( user != null ) { %>
- <%= user.UserData.ToString().HtmlEncode() %>
- <% } %>
- <input type="submit" name="Logon" value="退出" />
- <% } else { %>
- <b>当前用户还未登录。</b>
- <% } %>
- </form></fieldset>
- <p id="hideText"><i>不应该显示的文字</i></p>
- <script type="text/javascript" src="js/JScript.js"></script>
- </body>
- </html>
页