请大家帮我看看这个Forms认证问题,谢谢。

lxfmanning 2004-11-21 09:17:04
Web应用程序虚拟目录为djmx,
djmx目录下的web.config文件有关内容为
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="default.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
...
...
<authentication mode="Forms">
<forms name=".ASPXAUTH " loginUrl="/default.aspx" protection="All" timeout="30"
path= "/djmx">
</forms>
</authentication>

<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
...
其中default.aspx是我做的验证窗体,在djmx下面
问题是:按理来说我没有登陆随便访问一个页面都会被重定向到localhost:8080/djmx/default.aspx
但是当我输入localhost:8080/djmx/test.aspx时浏览器显示的地址是http://localhost:8080/default.aspx?ReturnUrl=%2fdjmx%2ftest.aspx并显示http 4004错误
~~~~~~~~~这儿少了/djmx,这是为什么?
我的default.aspx的关键代码如下:(ValidateUser函数检查用户是否输入了正确的密码)
private void Submit1_ServerClick(object sender, System.EventArgs e)
{
if(ValidateUser(Text1.Value,Password1.Value))
{
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt=new FormsAuthenticationTicket(1,Text1.Value,DateTime.Now,DateTime.Now.AddMinutes(30),true,"your custom data"); //创建一个验证票据
cookiestr=FormsAuthentication.Encrypt(tkt);//并且加密票据
ck=new HttpCookie(FormsAuthentication.FormsCookieName,cookiestr);// 创建cookie
ck.Expires=tkt.Expiration;//设置cookie有效期
ck.Path=FormsAuthentication.FormsCookiePath;//cookie存放路径
Context.Response.Cookies.Add(ck);
string strRedirect;
strRedirect=null;
//strRedirect=Request["ReturnUrl"];
if(strRedirect==null)
{
if(Text1.Value=="administrator")
Context.Response.Redirect("test.aspx");
else
Context.Response.Redirect("gpdjxt.htm");
}
else Context.Response.Redirect(strRedirect,true);
}
else
{
Context.Response.Redirect("logonerror.htm");
}


}
...全文
125 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxfmanning 2004-11-21
  • 打赏
  • 举报
回复
这个肯定执行了Redirect的呀,要不怎么在url后面加上了 ReturnUrl=%2fdjmx%2ftest.aspx
这个东西一开始是没有的
listhome 2004-11-21
  • 打赏
  • 举报
回复
主要看看程序到这怎么跳的!
if(Text1.Value=="administrator")
lxfmanning 2004-11-21
  • 打赏
  • 举报
回复
你的妮称换得真快,赞!
我正在调试,但是对于
http://localhost:8080/djmx/default.aspx?ReturnUrl=%2fdjmx%2ftest.aspx
我主要看什么变量呢/
listhome 2004-11-21
  • 打赏
  • 举报
回复
呵呵,你用断定单步调试一下你的程序看看!

打错,不是断定,是断点
listhome 2004-11-21
  • 打赏
  • 举报
回复
呵呵,你用断定单步调试一下你的程序看看!

你这么让大家猜怎么猜呀!
lxfmanning 2004-11-21
  • 打赏
  • 举报
回复
谢谢谢谢,但是现在有新问题:我修改了一下
private void Submit1_ServerClick(object sender, System.EventArgs e)
{
...
Context.Response.Cookies.Add(ck);
string strRedirect;
strRedirect=Request["ReturnUrl"];
if(strRedirect==null)
{
if(Text1.Value=="administrator")
Context.Response.Redirect("test.aspx");
else
Context.Response.Redirect("gpdjxt.htm");
}
...

}
按理来说我用administrator 登陆default.aspx的话会重定向到test.aspx,
但实际上浏览器地址烂变为:
http://localhost:8080/djmx/default.aspx?ReturnUrl=%2fdjmx%2ftest.aspx并且页面显示的还是default.aspx这是怎么回事?
conquersky 2004-11-21
  • 打赏
  • 举报
回复
hehe 经过 楼主要细心阿
qwjcool 2004-11-21
  • 打赏
  • 举报
回复
路过
godblessyU 2004-11-21
  • 打赏
  • 举报
回复
he he~
listhome 2004-11-21
  • 打赏
  • 举报
回复
你也太马虎了吧!
listhome 2004-11-21
  • 打赏
  • 举报
回复
<forms name=".ASPXAUTH " loginUrl="default.aspx" protection="All"
lxfmanning 2004-11-21
  • 打赏
  • 举报
回复
谢谢大家。谢谢不想睡
lxfmanning 2004-11-21
  • 打赏
  • 举报
回复
faint,,,搞定了,原来是那个=".ASPXAUTH "多了一个空格,晕死
买单!

62,047

社区成员

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

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

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

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