zoukankan      html  css  js  c++  java
  • 在基于Windows验证的Web应用程序中检索当前用户的所有角色

    我们知道,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+"<br />");

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

     

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

    <roleManager defaultProvider="WindowsProvider"
      enabled="true"
      cacheRolesInCookie="false">
      <providers>
        <add
          name="WindowsProvider"
          type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>

     

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

    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

  • 相关阅读:
    v-bind 和v-model 的区别
    解决PC端和移动端自适应问题?
    安全解决将字符串" "转换成换行
    最全的正则表达式-匹配中英文、字母和数字(转)
    vue:style标签中的scoped属性(作用域)和lang属性的介绍
    vue项目main.js文件下import router from './router'默认导入router文件夹下index.js的原因
    VUE修改样式无效
    lodop如何获取打印机名称
    深拷贝和浅拷贝
    Vue.js学习笔记:props传递数据(转)
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1427890.html
Copyright © 2011-2022 走看看