Как получить текущего пользователя в модели ASP.NET MVC - PullRequest
5 голосов
/ 21 декабря 2010

На мой взгляд, это не дубликат Как получить текущего пользователя в Asp.Net MVC .

Я пытаюсь выяснить, как получить доступТекущий пользователь из модели ASP.NET MVC таким образом, чтобы его можно было легко протестировать.Модели - это объекты LINQ to SQL, которые генерируются SqlMetal.

Причина, по которой мне нужно знать текущего пользователя в модели, заключается в том, что я хочу ограничить доступ к определенным свойствам / методам на основе привилегий этого пользователя.

Я открыт для принятия альтернативного проекта и внесения любых изменений, необходимых для его реализации в чистом, дружественном для юнитов тестировании виде.

Ответы [ 3 ]

5 голосов
/ 21 декабря 2010

Управление разрешениями и ограничение доступа к свойствам звучит как работа для контроллера. Единственная ответственность модели - хранить данные, а не знать о пользователях и разрешениях или управлять ими. Короче говоря, вам не нужно получать текущего пользователя в модели.

2 голосов
/ 21 декабря 2010

Я всегда создавал новые экземпляры своих классов обслуживания для каждого экземпляра контроллера. Учитывая это, вы можете просто передать текущего пользователя конструктору службы, чтобы сделать его доступным для остальной части вашей модели. Если вы предоставляете текущего пользователя как свойство в своих интерфейсах служб, вы можете легко смоделировать его для тестирования.

0 голосов
/ 21 декабря 2010

Я бы определил интерфейс IUserService с помощью метода GetUser, который бы возвращал пользовательский объект, а затем определял две реализации, одну для реального приложения и одну для тестового сценария.

...