MVC3 - Доступ к пользовательскому контексту в базовом классе контроллера - PullRequest
2 голосов
/ 11 октября 2011

У меня есть следующий код в представлении

@User.Identity.Name

Работает нормально.

Тот же код в пользовательском базовом классе контроллера не работает. User объект null

public class AdminBaseController : Controller
    {
        public AdminBaseController()
        {    
            string userId = User.Identity.Name;                
             //if(!AnAdmin)
                 //redirect to UnauthorizedPage

Я хочу использовать этот базовый класс вместо System.Web.MVC.Controller в качестве базы для всех экранов моего администрирования. Таким образом, я могу перенаправить любого, кто не является администратором (аутентификация NTLM).

Почему нули? Как мне добраться до моего контекста? (HttpContext и что-то, называемое ControllerContext тоже ноль)

<ч /> После некоторой обработки все становится пустым в конструкторах контроллера. Методы действий работают нормально. Вопрос все еще стоит, но, похоже, мне нужна помощь в выборе альтернативной реализации.

Ответы [ 2 ]

4 голосов
/ 11 октября 2011

Вы должны использовать Фильтр авторизации , ASP.NET MVC Authorization . Также проверьте Понимание фильтров действий .

Или вы можете переопределить метод Initialize на контроллере, объект пользователя будет инициализирован.

0 голосов
/ 11 октября 2011

Я только что попытался получить доступ к свойству «Name» в функции внутри класса контроллера.Это не было проблемой, и это не было нулем.

Мое лучшее предположение, что вы не можете получить доступ к этому объекту в конструкторе контроллера.

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