asp.net通用权限设计思想
来源:互联网 发布:手机怎么截图淘宝客服 编辑:程序博客网 时间:2024/05/20 04:11
权限大概分为几块:
菜单权限
文件夹---所谓的模块
文件权限
显示列权限
按钮权限
实现思想:
其实菜单也就是个显示的权限,这里并不是主要。
重点在于文件夹-文件-数据列-按钮,这里可以做成个树。
通过Global.asax控制文件文件夹的权限
这里先贴出部分代码,别的有待研究,哈哈。
【一】登录页面--Default.aspx
Hashtable ht = new Hashtable(); //创建一个Hashtable实例
string uid = string.Empty;//用户ID
string gid = string.Empty;//用户组ID
DataTable dt = new DataTable();
dt = new SQLDBHandler().ExecuteDataTable("select * from P_User where username='" + TextBox1.Text + "' and pwd='" + TextBox2.Text + "'");
bool islogin = false;
if (dt!=null&&dt.Rows.Count > 0)
{
//登录成功
islogin = true;
uid = dt.Rows[0]["id"].ToString();//得到用户ID
//取出用户组ID
gid = new SQLDBHandler().ExecuteScalar("select gid from P_GroupUser where uid='" + uid + "'").ToString();
ht.Add("uid", uid);
ht.Add("gid", gid);
}
if (islogin)
{
Session.Clear();
Session["ids"] = ht;
Response.Redirect("default.aspx");
}
else
{
this.Label1.Text = "登录失败,用户名或密码错误!";
this.Label1.Visible = true;
}
【二】Global.asax
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Response.Write("请求开始...<br>" + Guid.NewGuid().ToString());
string url =Request.Url.AbsoluteUri.ToString().ToLower();//URL地址
string urlBack = Request.CurrentExecutionFilePath;//URL后面部分
Response.Write("<br>当前URL地址:"+url);
Response.Write("<br>当前urlBack地址:" + urlBack);
bool canVistied = false;
Hashtable ht = new Hashtable();
ht = Session["ids"] as Hashtable;
if (ht != null)
{
Response.Write("<br>得到session<br>");
string gid = ht["gid"].ToString();
if (gid.Trim().Length > 0)
{
#region 处理页面权限
string sqlPage = "select pdir from P_Page where gid='" + gid + "'";
System.Data.DataTable dtPage = new SQLDBHandler().ExecuteDataTable(sqlPage);
if (dtPage != null & dtPage.Rows.Count > 0)
{
for (int i = 0; i < dtPage.Rows.Count; i++)
{
if (dtPage.Rows[i][0].ToString().ToLower() == urlBack.ToLower())
return;
}
}
#endregion
#region 处理模块权限
string sql = "select mname from P_Model a inner join P_GroupModel b on a.id=b.mid where b.gid='" + gid + "'";//得到所有模块名称
System.Data.DataTable dt = new SQLDBHandler().ExecuteDataTable(sql);//得到模块--即文件夹
if (dt != null && dt.Rows.Count > 0)
{
Response.Write("<br>权限范围:<br>");
for (int i = 0; i < dt.Rows.Count; i++)
{
Response.Write("【" + dt.Rows[i][0].ToString() + "】");
if (url.Contains(dt.Rows[i][0].ToString().ToLower()))
{
Response.Write("……");
Response.Write("<br>这个文件夹可以访问,用户拥有" + dt.Rows[i][0].ToString() + "权限");
canVistied = true;
break;
}
}
}
#endregion
}
}
else
{
Response.Write("<br>没有得到session<br>");
}
if (!canVistied && url != "http://localhost/default.aspx")
{
Response.Clear();
Response.Write("您无权访问该页面!");
Response.End();
}
}
这个版本有待升级,只是初稿。
哥第一次写博客,转载请厚道
- asp.net通用权限设计思想
- asp.net通用权限设计思想雏形
- ASP.NET通用权限组件思路设计
- asp.net通用权限系统(可插拔的权限设计)
- asp.net通用权限系统
- 通用权限实现的核心设计思想
- 通用权限实现的核心设计思想
- 通用权限实现的核心设计思想
- Asp.net的设计思想
- Asp.net的设计思想
- ASP.NET通用权限组件实现一
- ASP.NET通用权限验证组件实现
- 通用权限管理的设计思想与实现
- asp.net MVC 权限设计
- asp.net MVC 权限设计
- asp.net MVC 权限设计
- asp.net MVC 权限设计
- 用户权限设计 ASP.NET系统用户权限设计与实现、用户认证管理设计方案、通用数据权限管理系统设计
- oracle的nvl函数的用法
- C# Asp.Net大文件上传 带进度条
- linux下的任务管理器默认分类
- BW:Infopackage置红,而job依然在跑?
- BW:暴力激活测试机的转换
- asp.net通用权限设计思想
- BW:Maintaining Authorizations for Hierarchies
- 获取局域网外网Ip的方法
- BW:Debug Loop
- BB重启方法
- BW:What is meant by Primary Index and Secondary Index
- 天气预报的链接方式
- validate.js
- android binder 讲解(四)