如何使用angualrjs获取用户所属的安全组列表

时间:2015-11-19 04:58:42

标签: javascript c# asp.net angularjs html5

在我使用角度js构建的ASP.Net MVC SPA中,我想根据用户是否在特定安全组中来显示或隐藏链接。我打算在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" };
    }

1 个答案:

答案 0 :(得分:1)

您可以将上述(GetSecurityGroups)公开为Web服务,然后使用生成的权限对象来显示/隐藏部分。

请注意,您仍然需要限制对服务器端的功能(即隐藏部分公开的Web服务调用)的访问,因为您实际上不能相信这种客户端安全性不仅仅是如果有用户决定使用未经授权的功能,则会遇到轻微障碍。