在我使用angular js构建的ASP.Net MVC中,我希望根据用户是否属于特定的安全组来显示或隐藏链接。我计划在html页面中使用ng-if指令来显示或隐藏。
在我之前的项目中,这是一个纯MVC.net应用程序,我使用了下面的方法来获得这个安全组列表。
但是我如何在angularjs应用程序中做到这一点呢?目前,我的应用程序在云上,它根据Azure Active Directory对用户进行身份验证。
internal static IEnumerable<string> GetSecurityGroups()
{
try
{
ClaimsPrincipal claimsPrincipal = null;
claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;
claimsPrincipal = ((claimsPrincipal == null) && (HttpContext.Current.User != null))
? HttpContext.Current.User as ClaimsPrincipal
: claimsPrincipal;
if (claimsPrincipal != null)
{
return ((ClaimsIdentity)claimsPrincipal.Identity).Claims
.Where(
claim =>
"group".Equals(claim.Type.Replace("http://sts.tmft.net/user/", ""),
StringComparison.InvariantCultureIgnoreCase))
.Select(c => c.Value).ToList();
}
}
catch (Exception exception)
{
Log.Error(exception);
}
return new[] { "No rights" };
}
发布于 2015-11-19 05:15:30
您可以将上述内容(GetSecurityGroups
)公开为web服务,然后让angular使用生成的权限对象来显示/隐藏部分。
请注意,您仍然需要限制对服务器端功能(即,隐藏部分公开的web服务调用)的访问,因为如果有用户决定使用未经授权的功能,您实际上不能相信这种客户端安全性只是一个次要的障碍。
https://stackoverflow.com/questions/33795569
复制相似问题