新手电脑网's Archiver

syziy 发表于 2008-10-4 21:38

asp.net控制后台页面登录跳转问题

大家在控制后台页面登录时是不是还在每个页面都在写Session呢.8AV~#C;u8y
太久没写代码了,以前做过这方面的控制,但后来又忘了,还好在做公司一个网站时又用到了后台:lol (t0Uv,D&Z
本来应该早在几天前就要进来写的了,可论坛登录不了了.'v6{)Sd9zNl%z m
进入正题吧!
l6B}6Oq'z't0B 我在控制后台是用继承的.面向对象嘛.+MZTv!RJl
首先写个类
N] B&zT,Oq"G.p 我命名为:BasePage
,LT9G.c!X.eO!ls[ tJ/c/pU
在这个类里面要用到Session所以要继承System.Web.UI.Page
a#Y)N*hn public class BasePage : System.Web.UI.Page:KVlwJ'~;xg
这个类里面有二个方法
9E/? Wenm%z 先定义一个bool类型的accessControl()方法0d{m$[I)H.U6b!S
protected override void OnInit(EventArgs e)//这里重写了事件的基类OnInit
T:mc'u2v/s&R I`-T {
l{UELf a
Kb U x8]Y+{ if (!this.accessControl()) return;//调用accessControl()方法得到的是true还是flase
ZES%_ D base.OnInit(e);//对页面进行初始化
aF0B$~M`,B }
z\JW`as&O+W
B)K-^o7qc,bz/sEG3N D Lp_ zO
public bool accessControl()6mo"Ei*pA;z |
{&I(d'B3|T#{#Ce
bool isPermit = true; 8c7K#E]*es0z]@d
string pagename = Request.CurrentExecutionFilePath; //获取当前用户当前请求的虚拟路径,用于判断用户访问的页面是在什么目录下&~f"YNF:e3c
int index = pagename.IndexOf("admin/"); //再检索一下网页是否在admin下Q2x9D7HUa/\U
if (index == -1) return isPermit; //如果获取的目录不存在,就说明用户没用访问后台页面i ks`9_
if (this.Session["admin_user"] == null || this.Session["admin_pwd"] == "")//判断用户名或密码为空的话,用户是没有登录的,就跳转到登录页面 {
o L8~Gs&W Response.Redirect("login.aspx");$AIze5]
return isPermit;
8JPD'N(}}ej }
jVP!?2NN g i7y :jXl7_od;z^j q%o
return isPermit;//如果用户是经过登录页面进来的这里就不用做任何判断了.!O*PZp#Q
}d9V)Cd!ysme

+Y+p?2g3YG b9T)z2o 最后我们只要将asp.net页面继承这个类就可以实现页面控制了
0o1a O*Ii~ `*? /L6l:V G'ch"D#T ?
public partial class C6net : System.Web.UI.Page//继承前的代码
Q~-?0]AzE g public partial class admin_index :BasePage//继承后的代码

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.