讨论:使ASP.NET网站Forms验证可以指定多个登录页面

jone_linux 2008-07-24 02:26:41
以下代码是来自:http://www.cnblogs.com/yicone/archive/2008/05/22/1204431.html

网站结构如下:
/default.aspx
/login.aspx
/adminlogin.aspx
/member/*.aspx
/admin/*.aspx

需求:访问/member/路径下的页面的请求转向到/login.aspx;
访问/admin/路径下的页面的请求被转向到/adminlogin.aspx;


1. 定义/LoginHandler.ashx。在ProcessRequest方法中,
if (!HttpContext.Current.User.Identity.IsAuthenticated){
string loginUrl;
string returnUrl = context.Request.Params["returnUrl"];

if(returnUrl.Contains("/Admin/")) {
loginUrl = "/AdminLogin.aspx";
}
else{
loginUrl = "/Public/Login.aspx";
}

if (!string.IsNullOrEmpty(context.Request.Params["returnUrl"])){
loginUrl = loginUrl + "?returnUrl=" + HttpUtility.UrlEncode(context.Request.Params["returnUrl"]);
}
context.Response.Redirect(loginUrl);
}

2. 配置/Web.config,

<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="System.Web.UI.SimpleHandlerFactory" 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>

如果在member登录成功后,FormsAuthentication.SetAuthCookie(Loginname,false);直接访问admin下的页面没有任何验证,能够正常访问,所以不知道这种方法是不是没有什么做用呢?

...全文
135 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧