猿问

ASP.Net MVC 5 检查 _Layout 的用户角色

大家好,我正在尝试检查我的用户在默认设置中的角色。我以为在我的视图中我只需要 'User.IsInRole("User")' 但这并不容易。我想根据用户的角色显示某些链接。这是我所拥有的,我尝试了几种不同的选择。我有默认的设置数据库和一些对这部分无关紧要的添加表。Request.IsAuthenticated 用于登录。


我尝试了 user.isinrole 和 request.isauthenticated 但在我看来这个实例还没有工作


@if (Request.IsAuthenticated)

                    {

                        <li class="nav-item">

                            <a class="nav-link" href="#">Assign Roles</a>

                        </li>

                        <li class="nav-item">

                            <a class="nav-link" href="#">View Roles</a>

                        </li>                        

                        <li class="nav-item">

                            <a class="nav-link" href="#">Reset Password</a>

                        </li>

                    } else if (Request.IsAuthenticated && User.IsInRole("User"))

                    {

                        <li class="nav-item">

                            <a class="nav-link" href="#">user Else clause</a>

                        </li>

                    } else if (Request.IsAuthenticated && User.IsInRole("Guest"))

                    {

                        <li class="nav-item">

                            <a class="nav-link" href="#">guest Else clause</a>

                        </li>

                    } else

                    {

                        <li class="nav-item">

                            <a class="nav-link" href="#">else else!! Else clause</a>

                        </li>

                    }

当没有用户登录时,'else' 起作用。


猛跑小猪
浏览 82回答 2
2回答

杨__羊羊

您可以像这样为 Principal 添加扩展方法public static class PrincipalExtensions{&nbsp; &nbsp; public static bool IsInAllRoles(this IPrincipal principal, params string[] roles)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return roles.All(r => principal.IsInRole(r));&nbsp; &nbsp; }&nbsp; &nbsp; public static bool IsInAnyRoles(this IPrincipal principal, params string[] roles)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return roles.Any(r => principal.IsInRole(r));&nbsp; &nbsp; }}并使用// user must be assign to all of the roles&nbsp;&nbsp;if(User.IsInAllRoles("Admin","Manager","YetOtherRole")){&nbsp; &nbsp; // do something}&nbsp;在视图中使用 User.IsInRole()阅读更多信息

Smart猫小萌

这就是我最终为我的解决方案所做的@if (User.IsInRole("User")){&nbsp; &nbsp; <li class="nav-item">&nbsp; &nbsp; &nbsp; &nbsp; <a class="nav-link" href="#">user Else clause</a>&nbsp; &nbsp; </li>}&nbsp;@if (User.IsInRole("Guest")){&nbsp; &nbsp; <li class="nav-item">&nbsp; &nbsp; &nbsp; &nbsp; <a class="nav-link" href="#">guest Else clause</a>&nbsp; &nbsp; </li>}
随时随地看视频慕课网APP
我要回答