最近做一个项目,要求用户在查看未经许可的页面时自动跳转到登录页面,登录完成后自动跳转回原先的请求页面。
原先我用了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控件可以方便的实现所需的登录相关的操作,请大家参考一下,有啥错误也请提出来哈
原先我用了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控件可以方便的实现所需的登录相关的操作,请大家参考一下,有啥错误也请提出来哈
解决方案 »
- 网站被攻击
- textbox控件的onkeypress属性能否写入css文件
- visual studio 2005 调试问题
- 急:.net网站连接SQLServer数据库的问题
- datagrid/gridview冻结若干列
- 数据库中时间是datatime类型,2006-03-15 22:22:22 这样的 我现在要查询所有日期是2006-03-15 的记录,sql怎么写?
- System.Data.SqlClient.SqlCommand”并不包含对“Execute”的定义
- 从数据库中读数据是,空值的判断?
- asp.net(C#做后台)中控考勤仪打卡后实时读取
- 各位壮士,思归大侠,快来助我,我已功力耗尽了
- 小白系列之有关新闻链接
- asp.net如何判断客户端是否安装了pdf阅读器?
{
FormsAuthentication.RedirectToLoginPage();
}