asp.net请求非法页面,如何自动跳转到登录页面
如题,未登录时候要访问userinfo.aspx时,肯定要跳转到Login.aspx。如何实现呢?
不要那种if(Session["**"]!=null)的判断,因为一个项目中上百个页面,有很多页面当没有登录都要返回登录页面。都这样判断肯定太麻烦了。
大家给出具体的方法吧。谢谢
[解决办法]
在一个基类中判断是否有session,然后所有页面继承这个类就行了
[解决办法]
传送门:
Basepage类+Session通用用户登录权限控制
[解决办法]
建个basepage类继承System.Web.UI.Page
protected override void OnInit(EventArgs e)
{
//判断逻辑。。。。
base.OnInit(e);
}
用到的页面继承basepage.
[解决办法]
11.楼的方法可行,是相对来说最好用的方法.
另外还有以下方法作为参考:
1.使用母版页
2.自己实现HttpMoudle,在请求过程中验证
3.自己实现HttpHander在请求过程中验证
4.在每个页面都引用同一个用户控件
5.利用asp.net自带的验证体系,如:表单验证.等
[解决办法]
那就写在你的Global.asax中的 Application_BeginRequest 方法里好了!
[解决办法]
http://hi.baidu.com/cwd3079530/item/c0838afdb7d10a703c198b56
[解决办法]
例如:
void Application_BeginRequest(object sender, EventArgs e)
{
if (Context.Request.Cookies["loginID"] == null && Context.Request.PhysicalPath != Context.Server.MapPath("~/login.aspx"))
Context.Response.Redirect("~/login.aspx");
}
[解决办法]
扩展Page,写自己的Page
[解决办法]
做(一般般)网页的人,其实不应该追求“常用”。应该追求“酷毙了”。
[解决办法]
正如lz所说,“一个项目中上百个页面,有很多页面......”。他们已经这样设计了,你如何让他们一个一个页面去把原来的继承Page类手工改为添加继承代码呢?
如果一定要手工操作,那么也应该写一个ascx,让它判断并重定向。然后lz就可以把它拖入一个个需要这个功能的aspx中了。
其实同一种东西可以有很多种实现方法。要深刻理解当前的特殊需求,才知道哪一个更合适。
技术本身,根本不算什么。
[解决办法]
public class InitPage:System.Web.UI.Page
{
public InitPage()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
protected override void OnLoad(EventArgs e)
{
if (Session[""] == null)
{
Response.Redirect("Login.aspx");
}
base.OnLoad(e);
}
}
[解决办法]
使用IHttpHandler能很好的解决这个问题