我正在尝试在ASP.NET 3.5中手动实现登录系统。基本上,在加载时,我希望网站检查并查看用户对象是否处于活动状态,如果没有,则我希望登录页面显示。
用户成功登录后,我希望用户能够访问他最初请求的同一页面。
例如:
在System.Net命名空间对等,我看到有一个“HttpWebRequest类”,它有一个“HttpWebRequest.AllowAutoRedirect属性”,但我不确定这会如何让我从登录页面回来。
注意:我知道ASP.NET中有自动身份验证系统设置,但我希望手动控制数据库。
- Tomek
答案 0 :(得分:2)
如果您不想实际使用内置的表单,则可以执行以下操作:
检查用户是否在要隐藏匿名用户的每个页面上进行了身份验证。如果未经过身份验证,请使用查询字符串中的URL将其重定向到您的登录页面。
if(!HttpContext.Current.User.Identity.IsAuthenticated) {
Response.Redirect(~/login.aspx?redirect=this_page.aspx");
}
然后在您的登录页面上,在用户登录后。检查查询字符串以查看是否存在重定向参数。
if(!String.IsNullorEmpty(Request.QueryString["redirect"]) {
string url = ResolveClientURL(redirect);
Response.Redirect(url);
}
当然这都是使用身份验证构建到.NET中,您可以拒绝匿名访问某些目录,当您这样做时,.NET将重定向到您的登录页面(在web.config中设置)和将在您的登录页面上包含“ReturnURL = blahblah”。
只是一个FYI。
答案 1 :(得分:1)
只需在Session中保存最初请求的网址或在登录页面上保存隐藏字段 成功登录后,使用Server.Transfer或Response.Redirect跳转到该页面。
答案 2 :(得分:0)
看起来像here描述了另一种方法。您似乎可以使用以下对象从登录页面返回:
FormsAuthentication.RedirectFromLoginPage
然而,根据这篇文章,更好的方法是使用JackM所描述的,但是过载:
Response.Redirect("~/default.aspx", false);
这样做可以防止在重定向页面时结束会话。