gpt4 book ai didi

asp.net - 在 ASP.NET 中使用角色

转载 作者:行者123 更新时间:2023-12-02 17:03:52 24 4
gpt4 key购买 nike

在 ASP.NET Web 应用程序中,我根据用户的角色限制了用户操作,如下所示

我在数据库中创建了三个表

表格

表:用户

UserID Username Password
1 Bob password1
2 Scott password2
3 Jisun password3
4 Sam password4
5 John password5

表:组

GroupID Name
1 Administrators
2 Clerk
3 Manager
4 Cashier

表:角色

UserID GroupID
1 1
2 2
2 3
3 4
4 3
4 4

在 Global.asax 文件中我编写了以下内容

Sub Application_AuthenticateRequest(sender As Object, e As EventArgs)
If Request.IsAuthenticated Then
'Determine this user's roles
Dim reader As SqlDataReader = _
SqlHelper.ExecuteReader(connection string, _
CommandType.StoredProcedure, "rolesForUser", _
New SqlParameter("@Username", User.Identity.Name))

' Create an array of role names
Dim roleList As New ArrayList
Do While reader.Read()
roleList.Add(reader("Name"))
Loop

'Convert the roleList ArrayList to a String array
Dim roleListArray As String() = roleList.ToArray(GetType(String))

'Add the roles to the User Principal
HttpContext.Current.User = _
New GenericPrincipal(User.Identity, roleListArray)
End If
End Sub

并在 asp.net 代码隐藏文件中添加以下代码

If User.IsInRole("Administrator") then
' Display sensitive material
ElseIf User.IsInRole("Clerk") then
' Display moderately sensitive material
Else
' Display only bland material
End If

目前一切正常。现在提出了一项新要求,即允许职员访问管理员执行的部分(但不是全部)功能。

我需要更改源代码才能满足上述新要求吗?

以后出现这样的要求时,我是否需要一次又一次地这样做?

或者我能做的任何更好的方法请建议我。

最佳答案

正如 Robin Day 所说,您要更改的不是您已实现的角色范式,而是“职员”可以访问的特定功能。这些更改将发生在您定义等职员正在执行的操作的任何位置(代码隐藏、内联代码、类等)。

我的下一个问题与职员功能本身无关,但您是否了解过 ASP.NET 成员身份(和 SqlRoleProvider)及其角色实现?

关于asp.net - 在 ASP.NET 中使用角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3165275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com