HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
2008-05-22 00:32
656 查看
网站结构如下:
/default.aspx
/login.aspx
/adminlogin.aspx
/member/*.aspx
/admin/*.aspx
需求:访问/member/路径下的页面的请求转向到/login.aspx;
访问/admin/路径下的页面的请求被转向到/adminlogin.aspx;
一开始,自己假想在/Web.config中作如下配置可以达到目的:
<system.web>
<authentication mode="Forms">
<forms loginUrl="/Login.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
</system.web>
<location path="member">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="admin">
<system.web>
<authentication mode="Forms">
<forms loginUrl="/AdminLogin.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
但很快发现,这样会导致一个运行时错误:
在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
Google了几下,遇到同样错误的不少,但问题相似的不多。于是临时采用了一种变通的做法(急于解决问题,可能有良好的/更好的解决方案)。两个步骤:
1. 定义/LoginHandler.ashx。在ProcessRequest方法中,
<system.web>
<authentication mode="Forms">
<forms loginUrl="/LoginHandler.ashx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
</system.web>
<location path="LoginHandler.ashx">
<system.web>
<httpHandlers>
<add verb="*" path="LoginHandler.ashx" type="Web.LoginHandler" validate="true" />
</httpHandlers>
</system.web>
</location>
<location path="member">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
/default.aspx
/login.aspx
/adminlogin.aspx
/member/*.aspx
/admin/*.aspx
需求:访问/member/路径下的页面的请求转向到/login.aspx;
访问/admin/路径下的页面的请求被转向到/adminlogin.aspx;
一开始,自己假想在/Web.config中作如下配置可以达到目的:
<system.web>
<authentication mode="Forms">
<forms loginUrl="/Login.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
</system.web>
<location path="member">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="admin">
<system.web>
<authentication mode="Forms">
<forms loginUrl="/AdminLogin.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
但很快发现,这样会导致一个运行时错误:
在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
Google了几下,遇到同样错误的不少,但问题相似的不多。于是临时采用了一种变通的做法(急于解决问题,可能有良好的/更好的解决方案)。两个步骤:
1. 定义/LoginHandler.ashx。在ProcessRequest方法中,
<system.web>
<authentication mode="Forms">
<forms loginUrl="/LoginHandler.ashx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
</system.web>
<location path="LoginHandler.ashx">
<system.web>
<httpHandlers>
<add verb="*" path="LoginHandler.ashx" type="Web.LoginHandler" validate="true" />
</httpHandlers>
</system.web>
</location>
<location path="member">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
相关文章推荐
- [转] HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
- 使ASP.NET网站Forms验证可以指定多个登录页面
- ASP.net中Security.FormsAuthentication验证用户的状态(匿名|已登录)
- Asp.Net Forms验证(自定义、角色提供程序、单点登录)
- asp.net mvc的Filter来验证Forms 判断是否登录,角色权限以及错误处理(转)
- Asp.Net Forms验证(自定义、角色提供程序、单点登录)
- 用asp.net实现远程获取其他网站页面指定内容
- 一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法!
- Asp.net mvc验证用户登录之Forms实现-转
- Asp.Net Forms验证(自定义、角色提供程序、单点登录)
- 如何在ASP.NET中使用验证通过的Windows Live ID用户登录网站
- asp.net Forms 身份验证 html页面
- 01-19asp.net基础--网站登录及验证
- asp.net网站首页根据IP自动跳转指定页面的示例
- 用asp.net实现远程获取其他网站页面指定内容
- asp.net Forms验证跨域页面不能访问的问题
- Asp.net实现网站提示信息页面后的定时自动跳转到指定页面
- asp.net forms 身份验证方式下跨域登录信息共享的实现方法
- ASP.NET Forms验证实现只有特定目录才要求登录
- asp.net网站首页根据IP自动跳转指定页面的示例