权限控制在信息管理中属于基本功能,权限控制中其中以Window权限为模型的角色用户(也称用户组用户)模型使用较多。本文以网站管理后台权限控制为例简要说明。
角色表+用户表,其中Hope_T_User(用户)中的User_RoleId关联Hope_T_Role(角色)的Role_Id,表中字段均为简单常见英文,不作详解。
主要思路是使用公共类在其中根据角色得出其越权时的操作,然后后台所有需要验证权限的页面均继承此类,使用相应参数判断角色以做相应操作。
公共类:AdminPermission
Code
1
2
3 /**//// <summary>
4 /// AdminPermission角色权限验证类
5 /// </summary>
6 public class AdminPermission : System.Web.UI.Page
7 {
8 Hope.BLL.Hope_T_Role bllRole = new Hope.BLL.Hope_T_Role();
9 protected void CheckUserPermission( enumRole objEnumRole )
10 {
11 bool isAllowAccess=false;//是否允许访问
12 if (Session["HopeUser"] == null)
13 {
14 isAllowAccess = false;
15 }//Session不存在时
16 Hope.Model.Hope_T_User objUser= (Hope.Model.Hope_T_User)Session["HopeUser"];
17 int roleId=0;
18 if (objUser != null)
19 {
20 roleId = Convert.ToInt32(objUser.User_RoleId);
21 }
22 Hope.Model.Hope_T_Role role = bllRole.GetModel(roleId);
23
24 if (role == null)
25 {
26 isAllowAccess = false;
27 }
28 else
29 {
30 switch (objEnumRole)
31 {
32 #region
33 case (enumRole.Role_PostArticle):
34 if (role.Role_PostArticle != "1")
35 isAllowAccess = false;
36 else
37 isAllowAccess = true;
38 break;
39 case (enumRole.Role_ManageArticle):
40 if (role.Role_ManageArticle != "1")
41 isAllowAccess = false;
42 else
43 isAllowAccess = true;
44 break;
45 case (enumRole.Role_ManageInfo):
46 if (role.Role_ManageInfo != "1")
47 isAllowAccess = false;
48 else
49 isAllowAccess = true;
50 break;
51 case (enumRole.Role_ManageLink):
52 if (role.Role_ManageLink != "1")
53 isAllowAccess = false;
54 else
55 isAllowAccess = true;
56 break;
57 case (enumRole.Role_ManageLog):
58 if (role.Role_ManageLog != "1")
59 isAllowAccess = false;
60 else
61 isAllowAccess = true;
62 break;
63 case (enumRole.Role_ManageRole):
64 if (role.Role_ManageRole != "1")
65 isAllowAccess = false;
66 else
67 isAllowAccess = true;
68 break;
69 case (enumRole.Role_ManageSystem):
70 if (role.Role_ManageSystem != "1")
71 isAllowAccess = false;
72 else
73 isAllowAccess = true;
74 break;
75 case (enumRole.Role_ManageUser):
76 if (role.Role_ManageUser != "1")
77 isAllowAccess = false;
78 else
79 isAllowAccess = true;
80 break;
81 case (enumRole.Role_ManageVote):
82 if (role.Role_ManageVote != "1")
83 isAllowAccess = false;
84 else
85 isAllowAccess = true;
86 break;
87 case (enumRole.Role_ManageAd):
88 if (role.Role_ManageAd != "1")
89 isAllowAccess = false;
90 else
91 isAllowAccess = true;
92 break;
93 case (enumRole.Role_ManageDoc):
94 if (role.Role_ManageDoc != "1")
95 isAllowAccess = false;
96 else
97 isAllowAccess = true;
98 break;
99 case (enumRole.Role_ManageRate):
100 if (role.Role_ManageRate != "1")
101 isAllowAccess = false;
102 else
103 isAllowAccess = true;
104 break;
105 #endregion
106 }
107 }
108 if (isAllowAccess == false)
109 {
110 Response.Write("<script type=\"text/javascript\">alert(\"抱歉,您无权限查看此页" + role.Role_ManageAd + "。\");return false;</script>");
111 }
112 }
113 }
114 /**//// <summary>
115 /// 角色权限
116 /// </summary>
117 public enum enumRole
118 {
119 #region
120 /**//// <summary>
121 /// 是否允许发布文章
122 /// </summary>
123 Role_PostArticle=1,
124 /**//// <summary>
125 /// 是否允许管理文章
126 /// </summary>
127 Role_ManageArticle,
128 /**//// <summary>
129 /// 是否允许管理链接
130 /// </summary>
131 Role_ManageLink,
132 /**//// <summary>
133 /// 是否允许管理附属信息
134 /// </summary>
135 Role_ManageInfo,
136 /**//// <summary>
137 /// 是否允许管理日志
138 /// </summary>
139 Role_ManageLog,
140 /**//// <summary>
141 /// 是否允许管理系统
142 /// </summary>
143 Role_ManageSystem,
144 /**//// <summary>
145 /// 是否允许管理投票
146 /// </summary>
147 Role_ManageVote,
148 /**//// <summary>
149 /// 是否允许管理用户
150 /// </summary>
151 Role_ManageUser,
152 /**//// <summary>
153 /// 是否允许管理角色
154 /// </summary>
155 Role_ManageRole,
156 /**//// <summary>
157 /// 是否允许管理广告
158 /// </summary>
159 Role_ManageAd,
160 /**//// <summary>
161 /// 管理下发文件
162 /// </summary>
163 Role_ManageDoc,
164 /**//// <summary>
165 /// 管理利率
166 /// </summary>
167 Role_ManageRate
168 #endregion
169 }
170
171
1
2
3 /**//// <summary>
4 /// AdminPermission角色权限验证类
5 /// </summary>
6 public class AdminPermission : System.Web.UI.Page
7 {
8 Hope.BLL.Hope_T_Role bllRole = new Hope.BLL.Hope_T_Role();
9 protected void CheckUserPermission( enumRole objEnumRole )
10 {
11 bool isAllowAccess=false;//是否允许访问
12 if (Session["HopeUser"] == null)
13 {
14 isAllowAccess = false;
15 }//Session不存在时
16 Hope.Model.Hope_T_User objUser= (Hope.Model.Hope_T_User)Session["HopeUser"];
17 int roleId=0;
18 if (objUser != null)
19 {
20 roleId = Convert.ToInt32(objUser.User_RoleId);
21 }
22 Hope.Model.Hope_T_Role role = bllRole.GetModel(roleId);
23
24 if (role == null)
25 {
26 isAllowAccess = false;
27 }
28 else
29 {
30 switch (objEnumRole)
31 {
32 #region
33 case (enumRole.Role_PostArticle):
34 if (role.Role_PostArticle != "1")
35 isAllowAccess = false;
36 else
37 isAllowAccess = true;
38 break;
39 case (enumRole.Role_ManageArticle):
40 if (role.Role_ManageArticle != "1")
41 isAllowAccess = false;
42 else
43 isAllowAccess = true;
44 break;
45 case (enumRole.Role_ManageInfo):
46 if (role.Role_ManageInfo != "1")
47 isAllowAccess = false;
48 else
49 isAllowAccess = true;
50 break;
51 case (enumRole.Role_ManageLink):
52 if (role.Role_ManageLink != "1")
53 isAllowAccess = false;
54 else
55 isAllowAccess = true;
56 break;
57 case (enumRole.Role_ManageLog):
58 if (role.Role_ManageLog != "1")
59 isAllowAccess = false;
60 else
61 isAllowAccess = true;
62 break;
63 case (enumRole.Role_ManageRole):
64 if (role.Role_ManageRole != "1")
65 isAllowAccess = false;
66 else
67 isAllowAccess = true;
68 break;
69 case (enumRole.Role_ManageSystem):
70 if (role.Role_ManageSystem != "1")
71 isAllowAccess = false;
72 else
73 isAllowAccess = true;
74 break;
75 case (enumRole.Role_ManageUser):
76 if (role.Role_ManageUser != "1")
77 isAllowAccess = false;
78 else
79 isAllowAccess = true;
80 break;
81 case (enumRole.Role_ManageVote):
82 if (role.Role_ManageVote != "1")
83 isAllowAccess = false;
84 else
85 isAllowAccess = true;
86 break;
87 case (enumRole.Role_ManageAd):
88 if (role.Role_ManageAd != "1")
89 isAllowAccess = false;
90 else
91 isAllowAccess = true;
92 break;
93 case (enumRole.Role_ManageDoc):
94 if (role.Role_ManageDoc != "1")
95 isAllowAccess = false;
96 else
97 isAllowAccess = true;
98 break;
99 case (enumRole.Role_ManageRate):
100 if (role.Role_ManageRate != "1")
101 isAllowAccess = false;
102 else
103 isAllowAccess = true;
104 break;
105 #endregion
106 }
107 }
108 if (isAllowAccess == false)
109 {
110 Response.Write("<script type=\"text/javascript\">alert(\"抱歉,您无权限查看此页" + role.Role_ManageAd + "。\");return false;</script>");
111 }
112 }
113 }
114 /**//// <summary>
115 /// 角色权限
116 /// </summary>
117 public enum enumRole
118 {
119 #region
120 /**//// <summary>
121 /// 是否允许发布文章
122 /// </summary>
123 Role_PostArticle=1,
124 /**//// <summary>
125 /// 是否允许管理文章
126 /// </summary>
127 Role_ManageArticle,
128 /**//// <summary>
129 /// 是否允许管理链接
130 /// </summary>
131 Role_ManageLink,
132 /**//// <summary>
133 /// 是否允许管理附属信息
134 /// </summary>
135 Role_ManageInfo,
136 /**//// <summary>
137 /// 是否允许管理日志
138 /// </summary>
139 Role_ManageLog,
140 /**//// <summary>
141 /// 是否允许管理系统
142 /// </summary>
143 Role_ManageSystem,
144 /**//// <summary>
145 /// 是否允许管理投票
146 /// </summary>
147 Role_ManageVote,
148 /**//// <summary>
149 /// 是否允许管理用户
150 /// </summary>
151 Role_ManageUser,
152 /**//// <summary>
153 /// 是否允许管理角色
154 /// </summary>
155 Role_ManageRole,
156 /**//// <summary>
157 /// 是否允许管理广告
158 /// </summary>
159 Role_ManageAd,
160 /**//// <summary>
161 /// 管理下发文件
162 /// </summary>
163 Role_ManageDoc,
164 /**//// <summary>
165 /// 管理利率
166 /// </summary>
167 Role_ManageRate
168 #endregion
169 }
170
171
需要验证的页面中添加如下代码
1 public partial class manage_manage_user_add :AdminPermission//继承公共类
2 {
3 protected void Page_Load(object sender, EventArgs e)
4 {
5 if(!IsPostBack)
6 {
7 CheckUserPermission(enumRole.Role_ManageUser);//验证权限
8 }
9 }
10 //…
11 }
2 {
3 protected void Page_Load(object sender, EventArgs e)
4 {
5 if(!IsPostBack)
6 {
7 CheckUserPermission(enumRole.Role_ManageUser);//验证权限
8 }
9 }
10 //…
11 }
此角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型。