就是授权的问题。比如树形菜单的连接只限定某种权限的用户才可以访问。
就是财务管理员只能访问他的功能页面
调度人员只能访问他的功能页面。
还有其他的人,只能访问他的。。
希望有数据库和页面
就是财务管理员只能访问他的功能页面
调度人员只能访问他的功能页面。
还有其他的人,只能访问他的。。
希望有数据库和页面
解决方案 »
- 快吐血了~Windows Server 2008 IIS下网站部署问题 (急)
- 如何释放多线程所占用的系统内存。
- 求一条SQL语句
- powerdesigner 12.5 生成实体类和sql处理项的功能?
- 关于AspNetPager翻页刷新的问题
- 简单的问题,是关于数据绑定,我在线,请大家帮个忙啊, 我在线
- 怎么设置treeview的图标大小啊,
- 我想实现在一个页面上定时功能,让它每隔1分钟到数据库中去取一次值。我在程序要打开很多页面,如何让这个定时器的页面一直在运作呢?
- 在没人帮我 真要死掉了 兄弟们
- 一个活,要求如下,有兴趣的请把报价及曾经做过的例子给我邮件。
- JS控制文本框输入问题!
- 多域名URLrewrite超难问题
数据库设计:
Users表:字段包括:(uid int,uname varchar(20),upwd varchar(20)
Roles表:字段包括:(rid int,rname varchar(20))
UserRole表:字段包括:(ruid int,rid(外键) int,uid(外键) int)
Menus表:字段包括:(mid int,mtext varchar(20),murl varchar(20),mparent int)注释:mparent 如果属于一级节点可设置为同一个数字,然后一级节点下面的子节点的mparent 等于一级节点的mid
powers表:字段包括:(pid int,rid(外键) int,mid(外键) int,tian bit,shan bit,gai bit,cha bit)需要用到的sql语句有:
查询某个用户所拥有的功能菜单:
可做成一个存储过程
create proc pro_SearchMenus
@uid int
as
select distinct mid,mtext,murl,mparent from Menus where mid in(select mid from powers where rid in(select rid from UserRole where uid=@uid))uid可以在登录时用session["uid"]=dt.rows[0]["uid"];保存下来下面是如何在树形控件中显示和设置:
第一步加载出父节点:代码
private void Createparent()
{
//首先利用以上sql语句得到数据源
//然后加载树的父节点
DataTable dt=SqlHelper.getDB.Query(sql);//查询得到所有的菜单
DataTable dd=SqlHelper.getDB.Query(sql2);//查询得到该用户所拥有的菜单出来
foreach(DataRow dr in dt.rows)
{
if(dr["mparent"].ToString()=="0")
{
TreeNode node=new TreeNode();
node.Text=dr["mtext"].ToString();
node.ToopTip=dr["mid"].ToString();
this.TreeView1.Nodes.Add(node);
CreateChildNode(node);
foreach(DataRow ds in dd.rows)
{
if(dr["mid"].ToString()==ds["mid"].ToString())
{
node.Checked=True;//选中该父节点
}
}
}
}
}
第二步加载字节点
private void CreateChildNode(TreeNode n)
{
DataTable dt=SqlHelper.getDB.Query(sql);//查询得到所有的菜单
DataTable dd=SqlHelper.getDB.Query(sql2);//查询得到该用户所拥有的菜单出来
foreach(DataRow dr in dt.rows)
{
if(dr["mparent"].ToSting()==n.ToopTip)
{
TreeNode cnode=new TreeNode();
cnode.Text=dr["ntext"].ToString();
cnode.ToopTip=dr["mid"].ToStirng();
n.ChildNodes.Add(cnode);
CreateChildNode(cnode);//递归方法
foreach(DataRow ds in dd.rows)
{
if(dr["mid"].ToString()==ds["mid"].ToString())
{
node.Checked=True;//选中该子节点
}
}
}
}
}哥们我写到这个份上了,如果你明白原理的话接下来应该很容易了。要成为一名好的程序言关键是要把原理搞清楚了,原理弄明白了什么都好说。有分的话给我多加点。呵呵
我想这样不知道可否:
使用ROLE实现WEB应用的授权。菜单什么的还是做到站点地图种。然后跟据权限不同。可以独到的节点也不同。
希望大家给我多点选择。先谢谢大家了。
每次postback都验证用户session是否过期,过期就弹回登录或者其他处理页面。