2010-08-27 2 views
0

Я начал с шаблона приложения навигации Silverlight 4 (включены службы RIA). (Как мне действительно не нравится раздутый шаблон бизнес-приложения) Я добавил службу проверки подлинности, и я могу аутентифицировать пользователей, , но хочу переопределить метод User.IsInRole.Как переопределить Silvelright 4 RIA Service AuthenticationService User.IsInRole

WebContext.Current.User.IsInRole("Guest"); 

Но я не могу найти места для переопределения поведения.

ответ

1

Что вы пытаетесь сделать? User.IsInRole - это реализация IPrincipal.IsInRole и действительно не должна быть переопределена.

Если вы хотите установить роли пользователя, вы можете сделать это на сервере в своем AuthenticationService, переопределив методы GetAuthenticatedUser или GetAnonymousUser.

Если вы хотите использовать метод, подобный IsInRole, вы можете расширить тип пользователя с частичным классом на клиенте и добавить любые методы.

+0

Ну, у меня есть пустая служба аутентификации, и в моем приложении я хочу иметь возможность называть WebContext.User.IsInRole («somerole»), и это вызовет поиск в нашей базе данных, чтобы узнать, эффективно ли этот пользователь в эту роль. У нас есть таблица «Пользователь» и таблица «Роль», а затем таблица ссылок «UserInRole» для создания отношения M <-> M. – TimothyP

+0

Вы не сможете выполнять поиск, когда кто-то звонит IsInRole (Silverlight передает асинхронную связь). Однако вы можете выполнить поиск раньше, в GetAuthenticatedUser. В качестве альтернативы вы должны иметь возможность использовать стандартную ассоциацию RIA Services для передачи роли для пользователя клиенту. Это может быть полезно, но в большинстве случаев наилучшим подходом является просто перетаскивание этой таблицы в список строк на сервере. –

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