2016-04-26 2 views
3

Я пытаюсь получить роли текущего пользователя в Orchard 1.9.2 из представления.Как я могу получить доступ к ролям текущего пользователя в Orchard со страницы просмотра?

Я попробовал этот фрагмент кода, но она всегда возвращает 0 роли:

var roles = ((ContentItem)WorkContext.CurrentUser.ContentItem).As<UserRolesPart>().Roles; 

Источник: https://www.cloudconstruct.com/blog/retrieving-role-information-in-your-orchard-view-templates

Любые идеи?

ответ

1

Возможно, использование инструкции отсутствует?

Попробуйте следующий код:

@using Orchard.ContentManagement 

@{ 
    var roles = WorkContext.CurrentUser.As<Orchard.Roles.Models.UserRolesPart>().Roles; 
} 

редактировать 1

Похоже, что пользователь не прошел проверку подлинности. Строка кода, размещенных выше создает следующие вызовы:

  1. Orchard.Environment.WorkContextImplementation.GetState("CurrentUser")
  2. Orchard.Environment.WorkContextImplementation.FindResolverForState("CurrentUser")
  3. перечисляя через список IWorkContextStateProvider, в этом списке должны быть следующие реализации: Orchard.Security.CurrentUserWorkContext
  4. Orchard.Security.CurrentUserWorkContext.Get("CurrentUser")
  5. IAuthenticationService.GetAuthenticatedUser() ->, который возвращает пользователя при его завершении

Итак, кажется, что любой из этих шагов возвращается без пользователя. Я предлагаю вам создать точку останова в Orchard.Environment.WorkContextImplementation.GetState(), чтобы узнать, где проблема.

+0

Используется заявление. Я пробовал код безрезультатно. Это сработало для вас? – matthewjamesr

+0

Имеет ли значение, что представление находится в теме? – matthewjamesr

+0

@matthewjamesr Я думаю, что это проблема аутентификации, см. ** edit 1 ** – ViRuSTriNiTy

Смежные вопросы