forms验证:有两个登录页面,能根据要求转到相应的页面吗?
<authentication mode="Forms">
<forms name=".admin_A" loginUrl="admin_A/login.aspx" />
<forms name=".admin_B" loginUrl="admin_B/login.aspx" />
</authentication>
根目录下有个admin_A目录,目录下有一个login.aspx文件,当点admin_A目录下任何文件时,先判断有没登录,如果没登录就转到admin_A/login.aspx文件.
根目录下另有个admin_B目录,当点击admin_B目录下的任何一个文件时,先判断有没登录,如果没登录就转到admin_B/login.aspx文件.
不分别建立虚拟目录,怎么实现?能不能用forms验证实现??
问题点数:50、回复次数:11Top
1 楼lr2651(戎 The Two Towers)回复于 2005-06-09 17:42:29 得分 0
不大明白你的意思
那你分别在A和B 目录的文件里判断登陆和控制转向不就可以了吗Top
2 楼lr2651(戎 The Two Towers)回复于 2005-06-09 17:48:31 得分 0
设 A文件夹下有A1.aspx文件,用户登陆信息保存在Session["id"]中
则在A1.aspx的Page_Load中
if (Session["id"]==null)
{
Response.Redirect("http://虚拟目录/admin_A/login.aspx");
}
Top
3 楼lr2651(戎 The Two Towers)回复于 2005-06-09 17:50:25 得分 0
错了,上面‘虚拟目录’改成你的服务器地址或者域名Top
4 楼e_lb(老牛吃嫩草---初学.net)回复于 2005-06-09 17:55:01 得分 0
谢谢"lr2651(戎 Waiting For Star)"的回答,你说的方法我知道,我是想用"表单身份验证"方法实现。Top
5 楼renyu732(Sysinfo)回复于 2005-06-09 18:02:15 得分 0
http://blog.csdn.net/renyu732/articles/382741.aspxTop
6 楼e_lb(老牛吃嫩草---初学.net)回复于 2005-06-09 19:19:14 得分 0
顶上去Top
7 楼minghui000(沉迷网络游戏)回复于 2005-06-09 20:01:44 得分 0
帮您顶一下Top
8 楼saucer(思归)回复于 2005-06-10 04:25:45 得分 50
在web.config里你只能设置一个认证页面,但这不是说你不能写N个认证页面,try something like the following...
in the web.config in the root directory
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="UniqueCookieName" loginUrl="login.aspx" />
</authentication>
<authorization>
<allow users="*" />
</authorization>
</system.web>
<location path="admin_A">
<system.web>
<authorization>
<allow users="admin_A" />
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="admin_B">
<system.web>
<authorization>
<allow users="admin_B" />
<deny users="*" />
</authorization>
</system.web>
</location>
<location path="admin_A/login.aspx">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
</location>
<location path="admin_B/login.aspx">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
</location>
</configuration>
in the PageLoad of the login.aspx at the root directory:
string ParamName = "ReturnUrl";
string ReturnUrl = Request.QueryString[ParamName];
if (ReturnUrl.ToLower().IndexOf("admin_a") >=0)
Response.Redirect("admin_A/login.aspx?" + ParamName + "=" + ReturnUrl);
if (ReturnUrl.ToLower().IndexOf("admin_b") >=0)
Response.Redirect("admin_B/login.aspx?" + ParamName + "=" + ReturnUrl);
make sure to give the users different roles for admin_A and admin_B
also see
HOW TO: Control Authorization Permissions in an ASP.NET Application
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q316871
Top
9 楼ph580(.Net,我喜欢!www.bjcan.com/hengxing)回复于 2005-06-10 08:30:55 得分 0
好极了Top
10 楼e_lb(老牛吃嫩草---初学.net)回复于 2005-06-10 10:47:56 得分 0
非常感谢 saucer(思归),高手就是不一样,思路很清晰。
还有个小问题,ReturnUrl字符串可能与“admin_a"不匹配,例如:多出一个"/"什么的,请问能有更精确判断方法吗?Top
11 楼yezhutou(向天朱)回复于 2005-06-13 14:44:45 得分 0
markTop





