我无法说清楚asp.net的身份验证是如何工作的,我根据帮助文档和google设置了以下配置:
<configuration>
<!--
Login.aspx and the random_code_img.aspx does not need authentication
But excluding the above files,all the page are protected.
-->
<location path="Login.aspx">
</location>
<location path="random_code_img.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
..........
</system.web>
</configuration>
现在在login.aspx.cs:
在loginButton_click方法中:
if (Membership.ValidateUser(username, password))
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
"",
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to the protected URL.
Session["havelogined"] = "1";
HttpContext.Current.Response.Write("<script>location.replace('Default.aspx')</script>");
}
else{
//do something
}
然而在login.aspx中,输入名称和密码后,再单击登录按钮,我被重定向到浏览器地址栏中的Default.aspx,但是我看不到默认的内容。 aspx,我只是看到了:
访问被拒绝。 描述:访问提供此请求所需的资源时发生错误。可能未配置服务器以访问请求的URL。
错误消息401.2 ................
所以我想知道asp.net的身份验证如何知道我是否已登录?我可以用一些可读信息重新发布这些通知吗?
此外,
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
这里的“用户”是什么意思?
我认为他们不是我数据库中的注册用户。
答案 0 :(得分:1)
HTTP 401.2状态代码对应于“未配置身份验证方法”。我需要更多信息来确认。如果我不得不猜测我会说你错过了&lt; forms&gt; &lt; authentication&gt;下的标记标签
如果您还没有找到这篇文章,可以尝试使用此链接来讨论如何完全设置表单身份验证 - http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx
<allow users="*"/>
表示允许所有用户。本质上,它指示ASP.NET允许所有用户(经过身份验证或未经身份验证)访问random_code_img.aspx
BTW:
<deny users="?"/>
表示不允许未经身份验证的用户。
希望这有帮助。
答案 1 :(得分:0)
在loginButton_click方法中,验证用户后,您只需使用
即可 FormsAuthentication.RedirectFromLoginPage
有关更多信息和示例,请参见此处。 http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx