asp.net请求非法页面,如何自动跳转到登录页面
如题,未登录时候要访问userinfo.aspx时,肯定要跳转到Login.aspx。如何实现呢?
不要那种if(Session["**"]!=null)的判断,因为一个项目中上百个页面,有很多页面当没有登录都要返回登录页面。都这样判断肯定太麻烦了。
大家给出具体的方法吧。谢谢
------解决方案--------------------麻烦啥,一开始就应该有这个判断,每个页面中都引用一个接口,或者从基类页面继承,基类页面中去判断
------解决方案--------------------Basepage 继承
------解决方案--------------------web.config 添加
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name=".ASPXAUTH"></forms>
</authentication>-->
------解决方案--------------------
+1,搞个基类页面(比如Basepage.cs,它最终的父级是System.Web.UI.Page )来处理请求地址的参数(其实可以做很多事),然后你的页面继承它咯,Basepage.cs可以在构造函数里面处理,也可以从写OnInit事件;当然,处理这些还可以通过继承System.Web.IHttpModule,来实现Init,然后做BeginRequest处理。楼主记得给分啊
------解决方案--------------------在一个基类中判断是否有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
------解决方案--------------------