100分求求教个登陆的问题
login.aspx 初始session
然后每个页面如果session == null
Response.Redirect login.aspx
有没有个简单的方法,不用在每个页面写 if(session == null) ....
只在一个地方写if(session == null) ...
不用在每个页面写if(session == null) ...
------解决方案--------------------自定义一个基类页
public class PageBase : System.Web.UI.Page
{
protected overrider OnInit(EventArgs e) {
// if(Session .....
}
}
然后所有 .aspx.cs/.aspx 继承此页面
------解决方案--------------------方案二,
开发一个用户控件, 托拽到需要验证的 aspx 上
public class AuthControl : System.Web.UI.UserControl
{
protected overrider OnInit(EventArgs e) {
// if(Session .....
}
}
------解决方案--------------------我现时的做法.新建一个Basepage.cs,而这个BasePage.cs继承一个System.Web.UI.Page
如:
public class BasePage : System.Web.UI.Page
然后你可以在BasePage类别中写你整个专案共用的属性,方法和函数,如我常用的几个方法.
//验证是否成功登录
public bool LoginOk
{
get
{
return (Session[ "LoginOk "] != null && (bool)Session[ "LoginOk "]);
}
set
{
Session[ "LoginOk "] = value;
}
}
//登录验证
public void LoginAuthorizationed()
{
if (!LoginOk)
{
Response.Redirect( "~/Login.aspx ");
}
}
等.
最后,你可以在需要共用的页面,继承这个BasePage类别即可.
------解决方案--------------------楼上几位已经说的很清楚了
PS:不建议if(session == null) ... 这样的写法
最好用正则表达式验证会更严谨些
------解决方案--------------------if(Session[ "权限 "].ToString() ==null)
====================================
if(Session[ "权限 "] == null)
如果你的Session[ "权限 "]为null,那么ToString()的时候肯定要报空引用异常的