Как получить UserId и RoleId вошедшего в систему пользователя при использовании publi c stati c MvcHtmlString - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть класс, который использует строки c stati и c MvcHtmlString. Я пытаюсь изменить то, что уже в классе, чтобы использовать Entity Framework. Однако, кажется, мне не нравится, когда я пытаюсь использовать

userid = User.Identity.GetUserId();

. Он не знает, что это за пользователь. Я пытался получить roleId обычным способом, и это тоже не нравится.

Вот текущая настройка. Все, что мне нужно, это текущие пользователи UserId и RoleId

 public static MvcHtmlString GetMenuBarPage(Guid? ParentId)
    {
        StringBuilder sb = new StringBuilder();
        GeneralEntities db = new GeneralEntities();
        //get role id and role regarding to role bind this
        //var userid = User.Identity.GetUserId();
        var userId = GetUserInfo("userid");
        var RoleId = GetUserInfo("roleid");

        var cacheItemKey = "tylrwb" + userId + "Us" + RoleId;

        var global = HttpRuntime.Cache.Get(cacheItemKey);
        if (global == null)
        {
            // Added IsForNavbar Pre-dates 02/09/2020
            global = db.MenuPermissions.Where(i => i.RoleId == RoleId || i.UserId == userId && i.IsForNavBar != false).ToArray();
            HttpRuntime.Cache.Insert(cacheItemKey, global, null, DateTime.Now.AddMinutes(2), System.Web.Caching.Cache.NoSlidingExpiration);
        }

        sb.Append("<ul class=\"sidebar-menu \"data-widget=\"tree\">");
        sb.Append("<li class=\"header\">MAIN NAVIGATION</li>");
        sb.Append("<li> <a href=\"" + MicrosoftHelper.MSHelper.GetSiteRoot() + "/Dashboard\"> <i class=\"fa fa-dashboard\"></i> <span>Dashboard</span> </a> </li>");

        sb.Append(GetMenuBar(ParentId, (MenuPermission[])global));
        sb.Append("</ul>");
        return MvcHtmlString.Create(sb.ToString());
    }

Я также хотел бы отметить, что это в классе Publi c stati c.

Спасибо за ваша помощь!

ОБНОВЛЕНИЕ: После некоторых копаний я обнаружил, что если вы не в контроллере, вы должны использовать HttpContext.Current.User.Identity.getUserId (); То же самое с ролями ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...