我试图在我的视图中实现一些授权检查,这些检查的逻辑比简单地检查当前角色更复杂。基本上我只想将某些部分输出给获得授权的用户。基本上我想在我看来这样做:
<p>Everyone can read this</p>
@if(ComplexAuthorizationLogic())
{
<p>Only authorized can read this</p>
}
我能想到的唯一选择是为我的模型添加属性,但是我必须在很多地方这样做,所以很多代码重复都感觉不对。
首先,我是否以正确的方式思考这个问题,还是应该完全区别对待?如果没有,你会推荐什么?
1 个答案:
答案 0 :(得分:0)
以下是我如何做到这一点:
创建一个helper / utility类,类似于下面的类。
命名空间Your.Root.Namespace
{
公共部分类SecurityProvider
{
public static bool HasAnyRole(params string [] roles)
{
bool hasAnyRole = false;
if(IsUserAuthenticated())
{
var user = HttpContext.Current.User;
var services = DependencyResolver.Current.GetService&lt; IMembershipService&gt;();
hasAnyRole = services.UserHasAnyRole(user.Identity.Name,roles);
}
return hasAnyRole;
}
public static bool IsUserAuthenticated()
{
bool isAuthenticated = false;
var user = HttpContext.Current.User;
if(user!= null&amp;&amp; user.Identity!= null)
{
isAuthenticated = HttpContext.Current.User.Identity.IsAuthenticated;
}
return isAuthenticated;
}
}
}
然后在视图中使用相关方法。
@if(SecurityProvider.HasAnyRole(&#34;联系&#34))
{
&LT; DIV&GT;
这是分类内容!您必须是管理员才能看到这个!
&LT; / DIV&GT;
}
您可以在我制作的示例项目中找到整个班级。