2014-01-03 1 views
4

Я использую идентификатор asp.net, и у меня есть несколько классов пользователей, которые наследуются от IdentityUser.Идентификатор Asp.net - Как войти в систему Независимо от дискриминатора

Допустим, у меня есть цепь наследования, как:

< IdentityUser - AppUser < - ServiceUser < - ServiceEmployee и ServiceCustomer (которые оба наследуют от ServiceUser).

При попытке создать единую форму входа в систему, какая из лучших стратегий?

Если вы используете контроллер учетной записи OTB и изменяете UserManager для использования ServiceUser, но попробуйте войти в учетную запись, которая была зарегистрирована как ServiceEmployee, она не сработает, потому что FindAsync(), по-видимому, пытается найти только на основе «ServiceEmployee» в поле дискриминатора , поэтому, если учетная запись была зарегистрирована как другой «тип», она не может использоваться для входа в систему. Таким образом, это происходит с любой комбинацией, когда зарегистрированные типы входа и входа различаются.

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

Спасибо за любую информацию.

ответ

0

Вы считаете, что ваши пользователи, занимающиеся идентификацией пользователей, и ваши собственные пользователи приложений отделяются? Значение User - это то, что содержит вашу идентификационную информацию, а Person - это то, что использует остальная часть вашего приложения (и другие типы, такие как Employee inherit from). Вот как я это делаю сам. Я полностью разделяю все материалы безопасности/идентификации (в отдельном проекте/контексте) и связываю только мои объекты User и Person, которые отлично подходят для меня - гораздо проще поддерживать и обновлять мою модель безопасности, не затрагивая остальную часть моего приложения и (как много).

+0

Да, это хорошая идея, спасибо. Думаю, мое мышление не пошло так, потому что все статьи и документация об идентичности говорили об использовании наследования для разных типов пользователей. На данный момент единственным моим решением было добавить отдельные формы входа для разных типов пользователей. Это не идеальный вариант, но он работает, и мне не нужно переделывать мои пользовательские классы. Я чувствую, что должно быть еще несколько «элегантных» решений. – jmichas

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