请问做一个资料信息管理系统,单位如下:总公司
销售部
销售一处
销售二处
销售三处
技术部
技术一部
技术二部
技术三部
行政部
企化部
广告部客户的要求是总公司的用户可以看所有的资料(本身及其下属,包括admin超级管理员对信息系统的初始资料),上级可以看下级的资料(包括本身)。请问一下应该怎么样对这个权限进行控制?谢谢,在线等。
销售部
销售一处
销售二处
销售三处
技术部
技术一部
技术二部
技术三部
行政部
企化部
广告部客户的要求是总公司的用户可以看所有的资料(本身及其下属,包括admin超级管理员对信息系统的初始资料),上级可以看下级的资料(包括本身)。请问一下应该怎么样对这个权限进行控制?谢谢,在线等。
解决方案 »
- 一个简单的算法问题
- 关于asp.net用request取值的小问题
- 在updatePanel外动态添加一些按钮,然后添加到tiger中,点击外部按钮的时候,点第一个正常,点第二个就刷新了整个页面,求赐教!!!
- 找出1至10000间的所有素数
- Asp.net中 谁用过KindEditor(上传图片)
- 列车时刻数据库,要的联系
- 寻求会员不同等级积分网站系统方面的书籍。。
- 有什么SQL语句可以代替SQL语句Where in
- 如何使自己的ASP。NET程序打开IE窗口时只显示IE的那个兰色条和页面(URL栏什么的都不显示)。
- 后台系统操作日志记录后台系统操作日志记录
- 请问怎么样选取编号最大值,实现自动编码
- 请问做网页时在VB脚本中可以用MsgBox吗?
如超级管理员,普通管理员(还可以继续按等级分下去)等等)
在Global.asax.cs中
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if(User!=null)
{
if(User.Identity.AuthenticationType=="Forms")
{
string[] roles=new string[4];
Login lg=new Login();
bool IsAdmin=false;
if(Web.Login.isAdmin)
IsAdmin=true;
roles[0]=lg.CheckRole(User.Identity.Name,IsAdmin).ToString();//获取用户角色,具体的角色名称如"HighAdmin","NormalAdmin"
HttpContext.Current.User=new System.Security.Principal.GenericPrincipal(User.Identity,roles);//指定用户的角色
}
}
}======以下针对不同文件访问权限
web.config中
<location path="AdminManage1"><!--高级管理员文件夹路径,只允许高级管理员访问-->
<system.web>
<authorization>
<deny users="?"/>
<deny roles="HighAdmin"/>
<allow roles="NormalAdmin"/>
</authorization>
</system.web>
</location>
<location path="AdminManage2"><!--普通管理员文件夹路径,只允许普通管理员访问-->
<system.web>
<authorization>
<deny users="?"/>
<deny roles="NormalAdmin"/>
<allow roles="HighAdmin"/>
</authorization>
</system.web>
</location>
==================如果在同一个文件===
可以先判断用户属于哪个角色,然后动态决定显示哪些内容
如
bool role1=User.IsInRole("HighAdmin");//是否是超级管理员
http://communityserver.org/Default.aspx
这个论坛的权限设计,不错
--------------
您发的这个好是好,但是我做的是基于角色的权限控制,可能和这个不太符合.我现在头疼的是单位的编码总是会重复比如说总公司的编码是B,其下属的编码分别是B1、B2、B3、。B11、B12。。当出现到编码B11时,问题出现了。因为B1下属的第一位编码也是B11,这样就会出现主键重复的问题,不知道该怎样解决,如果把这个问题解决掉,我应该可以把权限控制做好的。
销售部 code:B1
销售一处 code:B11
销售二处 code:B12
销售三处 code:B13
技术部 code:B2
.......
....... 行政部code:B9
企化部code:B10
广告部code:B11
销售一处和广告部的code就重复了,怎么办才好呢
--------你说的也有道理,但是如果我把编码问题处理好了的话,也应该可以实现相应权限控制。
我是先把角色定义好for example: 规章制度(菜单): 查看、新增、修改、删除
档案存放(菜单): 查看、新增、修改、删除定义“总公司”角色,同时具有这两个菜单的查看功能。
然后根据编码查询 所有 deptid like 'B%'的资料。我就是这样设计的,可能还有哪地方不合适,目前就头疼编码这块不知道怎么实现比较好
string sSQL = "select max( cast( substring( deptid,len(parentid) + 1, len( deptid ) - len(parentid) ) as int )) + 1 as co from deptinfo where parentid= '"+this.lbID.Text.Replace("'", "''").Trim()+"'";
SqlCommand myconn=new SqlCommand(sSQL,conn);
SqlDataReader dr = myconn.ExecuteReader();
if(dr.Read())
{
if(dr["co"].ToString() != "" )
{
id =this.lbID.Text.Replace("'", "''").Trim() + dr["co"].ToString();
}
else
{
id =this.lbID.Text.Replace("'", "''").Trim() +"001";
}
else
{
id=this.lbID.Text.Replace("'", "''").Trim() +"001";
}执行过后,还是无法实现B001、B002、B003等的效果,而是得到了B1、B2、B3的结果,请问应该怎样转换才合适呢