检查剃刀页面登录用户角色(Checking login user role in razor pag

2019-08-17 01:18发布

@if (Request.IsAuthenticated && User.Identity.Name=="administrator")
{
     <div id="sidebar">
        <div class="module">
        <ul class="menu">
                            <li>@Html.ActionLink("Home", "Index", "Home")</li>
                            <li>@Html.ActionLink("About", "About", "Home")</li>
                            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                        </ul>
         </div>
         <div class="mainContent">
             Hello, @User.Identity.Name !
         </div>
     </div>

这是我的布局,如果用户被认证为管理员,但这种检查没有看起来很好,我需要检查用户的角色不是他的名字。

这里是CONTROLER方法

    public ActionResult AuthenticatedUserLayout(string username) 
    {
        var lst=userContext.UserProfiles.ToList();
        var user = lst.Select(u => u.UserName == username);

        if(IsAdmin(Session["LoginUser"].ToString())) return View(user); else return Index();
    }

我还发现, return View(user)是不行的,因为我不知道如何使任何使用的user

Answer 1:

@if (Request.IsAuthenticated && User.IsInRole("Administrators"))
{
     <div id="sidebar">
        <div class="module">
           <ul class="menu">
              <li>@Html.ActionLink("Home", "Index", "Home")</li>
              <li>@Html.ActionLink("About", "About", "Home")</li>
              <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
            </ul>
         </div>
         <div class="mainContent">
             Hello, @User.Identity.Name !
         </div>
     </div>
}


Answer 2:

Dave的答案是正确的。 我建议你考虑使用你的模型称为财产IsAdministratorCanSeeSidebar和治疗在回答这个问题的领域逻辑

视图应与模型只工作。 综观线程,从数据库中读取,同时在以下方面,他们回答的问题域相同。 所有这些类型的问题应该在你的手中控制器回答的模式关闭的视图。



Answer 3:

对于ASP.NET核心剃刀页

if (User.Identity.IsAuthenticated && User.IsInRole("Administrator"))


文章来源: Checking login user role in razor page