日期:2014-05-18  浏览次数:20434 次

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()的时候肯定要报空引用异常的