使用Login控件DestinationPageUrl属性实现登录返回请求页面

吃饱喝足 2010-04-13 04:21:17
最近做一个项目,要求用户在查看未经许可的页面时自动跳转到登录页面,登录完成后自动跳转回原先的请求页面。
原先我用了ASP.NET2.0自带的login控件,在DestinationPageUrl属性中指定要跳转回去的页面,但如果用户可以从不同的页面发出请求就没有办法了。
在网上查了很多资料,大部分都是说用Session,但是Session会影响性能这是共识,所以能少用还是尽量少用。
经过一天的苦心钻研终于发现一个简单可行的办法,原先一门心思只想着在login控件的属性框里面设置DestinationPageUrl,它自然只能是一个静态值,为什么不能在程序中动态改变它呢。

代码如下:
Source.aspx:

if (User.IsInRole("admin") == false)
{
Response.Redirect("Login.aspx?ReturnUrl=Source.aspx");// 转向Login.aspx登录页面之前,记录请求页面的url
}


Login.aspx:

string url;
protected void Page_Load(object sender, EventArgs e)
{
url = Request.Params["ReturnUrl"]; // 获取源页面的url
}

protected void Login1_LoggedIn(object sender, EventArgs e)
{
Login1.DestinationPageUrl = url; // 根据源页面的url,设置登录完成后的转向url
}


通过ASP.NET2.0提供的Login控件可以方便的实现所需的登录相关的操作,请大家参考一下,有啥错误也请提出来哈
...全文
445 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吃饱喝足 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 littleqiang520 的回复:]

你可以用 Forms窗体验证,用FormsAuthentication.RedirectToLoginPage()方法来实现。
C# code

if (User.IsInRole("Admin") == false)
{
FormsAuthentication.RedirectToLoginPage();
}
[/Quote]

多谢楼上,又学了一招
不过我的主要目的不是为了跳转到登陆页面,而是从登录页面跳转回来
liq1979 2010-04-13
  • 打赏
  • 举报
回复
你可以用 Forms窗体验证,用FormsAuthentication.RedirectToLoginPage()方法来实现。

if (User.IsInRole("Admin") == false)
{
FormsAuthentication.RedirectToLoginPage();
}

62,074

社区成员

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

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

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

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