【问题标题】:How to check user is in administrator group or not如何检查用户是否在管理员组中
【发布时间】:2014-05-01 13:23:42
【问题描述】:

如何获取用户组或用户是否在管理员组?

我正在使用 .NET 框架 3.5 网络应用程序。

我得到的用户名如下:

   Dim strUser As String = System.Web.HttpContext.Current.User.Identity.Name.ToUpper

现在,我需要检查这个用户是否在管理员组中?或者,获取用户的所有组。

请分享一些有助于我实现这一目标的东西。

谢谢。

【问题讨论】:

标签: asp.net .net vb.net


【解决方案1】:

如果你有超过1个管理员,你可以使用以下两种方式来确定他/她是否是管理员或他/她属于哪个组

1> 修改数据库表 向用户登录数据库添加一行以接受整数值,将其命名为您想要的任何内容或将其命名为组 现在,如果用户是管理员组,则将 1 传递给所有管理员 2 传递给员工,并相应地 稍后您要检查他或她属于哪个组,只需检查他或她的组值!

2> 如果要排序的人数较少 将他们的名字放在代码中并使用字符串比较! 尽管我建议您使用第一种方法!这是一个很好的做法!

【讨论】:

    【解决方案2】:
    var isAdmin =((System.Security.Principal.WindowsPrincipal)this.HttpContext.User).IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)
    

    【讨论】:

    • 但是,用户名将从用户上下文中获取,因为这是 Web 应用程序。所以,我确实有用户名字符串作为“域名\用户名”,我需要检查。
    • 给错误Unable to cast object of type 'System.Security.Principal.WindowsIdentity' to type 'System.Security.Principal.WindowsPrincipal'.
    • 将此代码用作Dim r As Boolean = CType(HttpContext.Current.User.Identity, System.Security.Principal.WindowsPrincipal).IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)
    • Dim r As Boolean = CType(HttpContext.Current.User, System.Security.Principal.WindowsPrincipal).IsInRole(System.Security.Principal.W‌​indowsBuiltInRole.Administrator) 这行得通。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2022-10-02
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多