我正在寻找一种使用授权有条件地显示某些标记的方法,而不仅仅是User.Identity.IsAuthenticated。
由于我在AD中使用Windows身份验证,我希望能够直接在标记中执行类似授权属性的操作,例如:
@[Authorize {Roles = @"domain\Admin"}]
<div> admin markup</div>
我尝试使用
@if(User.IsInRole(@"domain\Admin"))
但这也不起作用。有人可以给我一个指向最佳方式的指针吗?
答案 0 :(得分:3)
您是否配置了RoleManager以支持您的AD角色?请注意,这与身份验证是分开的。
在web.config中,roleManager
中应该有一个system.web
元素,允许您配置AD角色的使用。具体而言,您需要启用管理器(enabled="true"
)并创建/指定提供程序。
请注意,第一种方法(AuthorizeAttribute
)只能应用于控制器和方法,而不能应用于标记中。但是,一旦正确配置了所有内容,第二种方法(User.IsInRole()
)应该适合您。