在基于Windows验证的Web应用程序中检索当前用户的所有角色

来源:互联网 发布:中文编程软件手机版 编辑:程序博客网 时间:2024/04/28 23:29
该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!

陈希章

原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/02/1427890.html
原文标题:在基于Windows验证的Web应用程序中检索当前用户的所有角色
原文发表:2009/4/2 2:50:00

我们知道,ASP.NET的Web应用程序允许4种身份验证方式,分别是:Windows,Forms,Passport,None

如果我们采用的是默认的Windows验证方式,那么可以在最小的代价下实现安全的身份验证机制。事实上,我们不要为此编写任何代码,也不需要额外为用户保存凭据。与此同时,用户(一般情况下)也无需在使用应用程序的时候输入用户名和密码。

那么,如何在基于Windows验证的Web应用程序中检索当前用户的所有角色呢?下面是一个范例

这是页面代码

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Web.Security;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Response.Write("当前用户名为:" + User.Identity.Name+"
");

                foreach (string role in Roles.GetRolesForUser())
                {
                    Response.Write("当前用户属于该角色:" + role+"
");
                }
            }
        }
    }
}

 

我们还需要设置web.config,让它可以知道使用什么样的角色管理提供程序查找角色。

  enabled="true"
  cacheRolesInCookie="false">
 
          name="WindowsProvider"
      type="System.Web.Security.WindowsTokenRoleProvider" />
 

 

有关这个提供程序的详细信息,有兴趣的朋友可以参考下面的链接

http://msdn.microsoft.com/zh-tw/library/system.web.security.windowstokenroleprovider(VS.80).aspx

 

值得一提的是,这个Provider所返回的角色列表中包含了域组(全局组)和本地组

很显然,使用这个提供程序,是无法对用户所属的组进行操作的,例如常见的添加组,编辑组,删除组等等,这些都是必须通过windows本身来完成。

与角色管理相关的几个操作还有

1. 确认某个用户是否在某个角色中

Response.Write(Roles.IsUserInRole("BuiltIn//Administrators"));//这个写法还可以给定用户名进行判断

或者

Response.Write(User.IsInRole("BuiltIn//Administrators"));//这个写法只能判断当前用户

 

2. 得到某个角色的所有用户 –这也是做不到的

 

image

 

另外,如果想要得到Windows用户身份的更多信息,可以通过下面的方式

image作者:陈希章
出处:http://blog.csdn.net/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原创粉丝点击