【问题标题】:Need Help User.Identity.IsAuthenticated using Asp.Net MVC Razor需要帮助 User.Identity.IsAuthenticated 使用 Asp.Net MVC Razor
【发布时间】:2015-07-03 07:10:17
【问题描述】:

需要帮助如何在 User.Identity.IsAuthenticated 中声明参数?

@if (User.Identity.IsAuthenticated)
{
    if (User.Identity.Name == "admin@admin.com")
    /*instead of User.Identity.Name, I want to use
    if(User.Identity.RoleID = 1)
    {
         Admin Login Successfull 
    }  
    else if(User.Identity.RoleID = 2)
    {
          User Login Successfull 
    }  

    Where to declare parameter "RoleID"*/

}

【问题讨论】:

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

要获取当前登录用户的角色,请使用:

Roles.GetRolesForUser() 

来自 MSDN 的 GetRolesForUser 的文档

【讨论】:

    【解决方案2】:

    您可以创建一个可以在视图中使用的 HtmlHelper 扩展方法,如下所示:

    @Html.LoggedInMessage(User)
    

    这将避免在您的视图中包含 if else 逻辑,但值得注意的是,您当前的逻辑可能存在属于多个角色的用户实例,除非您的系统对此进行了限制。

    public static MvcHtmlString LoggedInMessage(this HtmlHelper htmlHelper, IPrincipal user)
    {
        var tb = new TagBuilder("span");
        if (user.Identity.IsAuthenticated)
        {
           if(user.IsInRole("Admin"))
           {
                tb.SetInnerText("Admin Login Successfull");
           }
           else if(user.IsInRole("OtherRole"))
           {
                tb.SetInnerText("User Login Successfull");
           }  
        }
        return new MvcHtmlString(tb.ToString());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多