Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果身份验证票证还包含有关角色的信息,那么为什么。。。?_C#_Asp.net_Asp.net Membership_Forms Authentication_Authorization - Fatal编程技术网

C# 如果身份验证票证还包含有关角色的信息,那么为什么。。。?

C# 如果身份验证票证还包含有关角色的信息,那么为什么。。。?,c#,asp.net,asp.net-membership,forms-authentication,authorization,C#,Asp.net,Asp.net Membership,Forms Authentication,Authorization,Q1–本机UrlAuthorizationModule不理解角色的原因是,角色信息存储在实现IPrincipal接口的托管对象中,本机模块无权访问该接口 A) 但是,如果本机UrlAuthorizationModule理解身份验证票证,因此可以与FormsAuthenticationModule一起工作,那么为什么它不能与角色模块一起工作呢 也就是说,这个票证不也包含关于用户所处角色的信息吗?如果是这样,那么UrlAuthorizationModule可以从票据中获取有关角色的所有信息,因此不需

Q1–本机UrlAuthorizationModule不理解角色的原因是,角色信息存储在实现IPrincipal接口的托管对象中,本机模块无权访问该接口

A) 但是,如果本机UrlAuthorizationModule理解身份验证票证,因此可以与FormsAuthenticationModule一起工作,那么为什么它不能与角色模块一起工作呢

也就是说,这个票证不也包含关于用户所处角色的信息吗?如果是这样,那么UrlAuthorizationModule可以从票据中获取有关角色的所有信息,因此不需要访问IPrincipal对象


问题2 以下文章声称:

如果匿名用户访问该站点,FormsAuthenticationModule和RoleManager模块都不会创建主体对象


A) 如果上述声明为true,那么以下代码不会引发异常,因为User属性将包含null引用:

        if (User.Identity.IsAuthenticated)
            Label1.Text = "user is authenticated";
        else Label1.Text = "user is not authenticated";
Label1显示“用户未通过身份验证”,这表明用户属性被分配给实现IPrincipal的对象,即使用户未通过身份验证



Thanx

关于Q1:如果CacheRoleSinocokie设置为false,那么将没有足够的信息来确定角色

关于问题2:引用

“激活的身份验证模块负责创建IPrincipal对象并将其存储在HttpContext.User属性中。这是至关重要的,因为下游授权模块使用此IPrincipal对象来做出授权决策。 在没有身份验证的情况下(例如,在IIS中启用匿名访问并且ASP.NET配置为),有一个特殊的未配置模块将默认匿名主体放入HttpContext.User属性。因此,HttpContext.User在身份验证后始终为非空。“