页面权限控制
来源:互联网 发布:linux java打开excel 编辑:程序博客网 时间:2024/06/01 10:19
页面权限控制
Posted on 2010-04-12 14:44 昆鹏 阅读(137) 评论(0) 编辑 收藏在asp.net页面权限控制中,
应为单独写一个类,类继承system.web.ui.page
在类的构造方法里,
应为单独写一个类,类继承system.web.ui.page
在类的构造方法里,
this.Init += new EventHandler(PageBase_Init);
为init事件添加我们要在页面加载中调用的方法,这里我们要调用的方法为PageBase_Init下面实现这个方法PageBase_Init,在出面写上权限控制就可以了
1:第一个表
这个表,第一个字段是要受控制访问的页面,第二个字段是能访问这些页面的用户组。
这个是用户表,关键是最后一个字段,表示用户所属的用户组,而相应的用户组才可以访问到相应的模块,或者页面
到此,数据库的设置完毕。
首先,自己设计一个类(PageBase),此类继承System.Web.UI.Page,受访问控制的页面必须 继承这个类。这个类的代码如下:
public class PageBase:System.Web.UI.Page
{
public PageBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.Init+=new EventHandler(PageBase_Init);
}
private void PageBase_Init(object sender, EventArgs e)
{
if(Session["UserName"]==null)
{
this.Response.Redirect("../back/error.aspx?ErrorInfo=超时或没登陆");
}
else
{
if(!this.UserRight(Session["UserName"].ToString(),this.ModuleName(this.Request.Path.ToString())))
{
this.Response.Redirect("../back/error.aspx?ErrorInfo=你没权限登陆,请与管理员联系");
}
}
}
private bool UserRight(string UserName,string ModuleName)
{
MyLibrary.MMClass objMMClass =new MMClass();
if( objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from View_UserRight where UserName='"+UserName+"' and module='"+ModuleName+"'").Tables[0].Rows.Count>0)
{
return true;
}
else
{
return false;
}
}
private string ModuleName(string path)
{
string [] str=path.Split('/');
return str[str.Length-1].Trim();
}
}
{
public PageBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.Init+=new EventHandler(PageBase_Init);
}
private void PageBase_Init(object sender, EventArgs e)
{
if(Session["UserName"]==null)
{
this.Response.Redirect("../back/error.aspx?ErrorInfo=超时或没登陆");
}
else
{
if(!this.UserRight(Session["UserName"].ToString(),this.ModuleName(this.Request.Path.ToString())))
{
this.Response.Redirect("../back/error.aspx?ErrorInfo=你没权限登陆,请与管理员联系");
}
}
}
private bool UserRight(string UserName,string ModuleName)
{
MyLibrary.MMClass objMMClass =new MMClass();
if( objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from View_UserRight where UserName='"+UserName+"' and module='"+ModuleName+"'").Tables[0].Rows.Count>0)
{
return true;
}
else
{
return false;
}
}
private string ModuleName(string path)
{
string [] str=path.Split('/');
return str[str.Length-1].Trim();
}
}
在此,对此类作简单的解释:
关键点是重写了PageBase_Init(object sender, EventArgs e),而受访问控制的页面继承此类后,每次加载时,都会先执行这个事件。在这个事件里,执行了用户身份的验证。
至此,用户身份的验证基本结束,呵呵,其实一开始我听说给系统上权限是很复杂的事情,是企业应用开发的核心技术,我自己在系统里面上了框架后,觉得也不过如此!
下面开始简单描述一下,怎么在页面里用超级管理员的身份灵活的进行权限设置。
设置页面如下:
用户组权限设置
页面有5个身份,检务科长,检务人员,查验科长,查验人员,超级管理员。
每个身份对应一个用户组(1,2,3,4,5)
上面的页面每个功能模块基本上对应一个页面。
此页面加载的时候,就已经在数据库里把每个用户组的相应的权限读出来,显示在页面上
页面加载时执行的程序如下:
private void DropDownSelect()
{
this.CheckBoxList1.ClearSelection();
objDataSet=objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from TeamTable where team="+Convert.ToInt32(this.DropDownList1.SelectedValue));
int i;
for (i=0;i<objDataSet.Tables[0].Rows.Count;i++)
{
int j;
for (j=0;j<this.CheckBoxList1.Items.Count;j++)
{
if(objDataSet.Tables[0].Rows[i]["module"].ToString()==this.CheckBoxList1.Items[j].Value)
{
this.CheckBoxList1.Items[j].Selected=true;
}
}
}
{
this.CheckBoxList1.ClearSelection();
objDataSet=objMMClass.Oracle_ReturnThings_Adapter(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"select * from TeamTable where team="+Convert.ToInt32(this.DropDownList1.SelectedValue));
int i;
for (i=0;i<objDataSet.Tables[0].Rows.Count;i++)
{
int j;
for (j=0;j<this.CheckBoxList1.Items.Count;j++)
{
if(objDataSet.Tables[0].Rows[i]["module"].ToString()==this.CheckBoxList1.Items[j].Value)
{
this.CheckBoxList1.Items[j].Selected=true;
}
}
}
作为管理员身份,可以随意给每个用户组相应的权限。点击“确定”按钮后。执行以下程序
private void Button1_Click(object sender, System.EventArgs e)
{
objMMClass.Oracle_NoReturnThings(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"delete from TeamTable where team="+Convert.ToInt32(this.DropDownList1.SelectedValue));
int i;
for(i=0;i<this.CheckBoxList1.Items.Count;i++)
{
if(this.CheckBoxList1.Items[i].Selected)
{
objMMClass.Oracle_NoReturnThings(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"insert into TeamTable (module,team) values ('"+this.CheckBoxList1.Items[i].Value+"',"+Convert.ToInt32(this.DropDownList1.SelectedValue)+")");
}
}
}
{
objMMClass.Oracle_NoReturnThings(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"delete from TeamTable where team="+Convert.ToInt32(this.DropDownList1.SelectedValue));
int i;
for(i=0;i<this.CheckBoxList1.Items.Count;i++)
{
if(this.CheckBoxList1.Items[i].Selected)
{
objMMClass.Oracle_NoReturnThings(System.Configuration.ConfigurationSettings.AppSettings["strConn"],"insert into TeamTable (module,team) values ('"+this.CheckBoxList1.Items[i].Value+"',"+Convert.ToInt32(this.DropDownList1.SelectedValue)+")");
}
}
}
- 关于页面权限控制
- 页面权限控制
- angularjs 页面权限控制
- 控制视图页面的访问权限
- 控制视图页面的访问权限
- 自定义标签taglib控制页面元素权限
- 用户权限指派,权限控制页面访问
- ubuntu中apache页面权限控制
- 关于html页面拦截器权限控制
- jsf的访问权限控制(控制访问页面)思路
- 权限如何控制页面控件显示的解决方案
- 关于页面权限校验控制的自定义Tag
- Asp.net 权限控制 利用用户控件include到页面
- 更清楚明白的 使用Filter控制页面的权限
- 3.权限控制:登陆页面(注意javascript第一句话)
- Asp.net 权限控制 利用用户控件include到页面
- yii 通过交易码, 控制页面访问权限
- Java Web开发中关于页面权限的控制
- Linux Mount NTFS分区造成的权限问题的解决方案
- 让Apache支持cURL
- Task synchronization
- Java字符串跟ASCII码互转
- 获取3d max模型的包围盒
- 页面权限控制
- pthread_cancel 使用方法1
- sem_init
- Delphi2009的Bug:WinSocket元件接收和发送的编码不一致(在Delphi XE版本中已做修改)
- for循环语句练习题1斐波那契数列
- Android 上传大文件
- for循环语句练习题2 100-200之间的素数
- 使用jrebel插件解决修改项目中的class导致server重启问题-----for resin server
- JAVASCRIPT中 正则表达式的使用