Q1 – 原生UrlAuthorizationModule 不理解角色的原因是角色信息存储在实现IPrincipal接口的托管对象中,而原生模块无法访问这些对象。
A)但是,如果本机UrlAuthorizationModule理解身份验证票证,因此可以与FormsAuthenticationModule一起使用,那么为什么它不能与 Roles 模块一起使用?
也就是说,这张票不是还包含有关用户所在角色的信息吗?如果是这样,那么UrlAuthorizationModule可以从票证中获取有关角色的所有信息,因此不需要访问IPrincipal对象?!
Q2 以下文章http://www.asp.net/learn/security/tutorial-11-vb.aspx声称:
如果匿名用户访问该站点,FormsAuthenticationModule和RoleManagerModule都不会创建主体对象。
A)如果上述声明为真,那么下面的代码不会抛出异常,因为User属性将包含一个空引用:
if (User.Identity.IsAuthenticated)
Label1.Text = "user is authenticated";
else Label1.Text = "user is not authenticated";
Label1显示“<em>User is not authenticated”,这表明User属性被分配了实现IPrincipal的对象,即使用户没有经过身份验证?!
谢谢