权限控制在信息管理中属于基本功能,权限控制中其中以Window权限为模型的角色用户(也称用户组用户)模型使用较多。本文角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型
权限控制在信息管理中属于基本功能,权限控制中其中以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 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 } 此角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述