Как продлить проверку подлинности ServiceStack

Я использую аутентификацию ServiceStack с ServiceStack.OrmLite (SqlServer). У меня разные типы пользователей, такие как Student, Teacher, Principal. Все типы пользователей будут иметь отношение к другим таблицам Db. Какова наилучшая практика его реализации?

A) Добавьте необходимые поля в таблицу UserAuth и сделайте Black Magic. (После создания UserAuth добавьте дополнительную информацию в таблицу вручную)

B) Студент: UserAuth (Все поля в UserAuth будут клонированы)

C) Student.UserAuthId, UserAuth.Meta [UserType.Student, StudentId] взаимная ссылка

D) Расширить XService, XFeature или ??

PS: Как добавить поля Owner и Type в таблицу ServiceStack UserAuth.

Существует несколько страtagsй добавления дополнительных метаданных в таблицы UserAuth и UserAuthDetails ,

Если вы хотите расширить схему UserAuth своим собственным пользовательским POCO, вам нужно подclassы classа OrmLiteAuthRepository включая ваши пользовательские POCO, например, см. Источник для OrmLiteAuthRepository :

 public class OrmLiteAuthRepository : OrmLiteAuthRepository, IUserAuthRepository { public OrmLiteAuthRepository(IDbConnectionFactory dbFactory) : base(dbFactory) { } } 

Расширьте UserAuthSession с помощью собственного пользовательского сеанса

В то же время расширение и предоставление типизированного пользовательского AuthUserSession – это рекомендуемый подход, поскольку он поддерживается функцией проверки подлинности ServiceStack, поскольку сеанс пользователей просто заглатывается в кэширующем провайдере (то есть не в РСУБД), где его безрисковые характеристики устойчивости, легко поддерживает расширенные типы.

Добавление дополнительных метаданных в поля метаданных

Для второстепенных расширений вы можете использовать поля словарей Meta string в каждой таблице, которые были добавлены специально для поддержки метаданных, хранящихся на заказ. Они также include полезные методы Get и Set которые также поддерживают сложные типы разбиения:

 userAuth.Set(new Address { ... }); var address = userAuth.Get
();

Связывание референтных данных с полями RefId и RefIdStr

UserAuth и UserAuthDetails также include int? RefId int? RefId и string RefIdStr которые вы можете использовать для ссылки на внешние данные, такие как ваши собственные пользовательские таблицы, против каждой записи User Auth или регистрации пользователя OAuth.

Извлечение информации UserAuth в собственные таблицы

Другой вариант – сделать то, что делает демон пример SocialBootstrapApi, и извлекать информацию UserAuth в свои собственные таблицы, переопределяя крюк OnAuthenticated в своем собственном пользовательском разделе, который вызывается каждый раз, когда пользователь успешно аутентифицируется.

Вот пример SocialBootstrapApi для копирования данных сеанса в пользовательский POCO пользователя и сохранение его в другой таблице.

 public class CustomUserSession : AuthUserSession { public string CustomId { get; set; } public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IAuthTokens tokens, Dictionary authInfo) { base.OnAuthenticated(authService, session, tokens, authInfo); //Populate all matching fields from this session to your own custom User table var user = session.TranslateTo(); user.Id = int.Parse(session.UserAuthId); user.GravatarImageUrl64 = !session.Email.IsNullOrEmpty() ? CreateGravatarUrl(session.Email, 64) : null; //Resolve the DbFactory from the IOC and persist the user info using (var db = authService.TryResolve().Open()) { db.Save(user); } } } 
  • Аутентификация на основе токенов в ядре ASP.NET
  • Вставить фид активности общедоступной страницы Facebook, не заставляя пользователя входить в систему / разрешать
  • Микширование форм с помощью проверки подлинности Windows
  • OWIN - Authentication.SignOut (), похоже, не удаляет файл cookie
  • Используйте обе таблицы учетных записей и пользователей с помощью программы «Разработка»
  • Понимание пассива сериализации десериализации
  • Почему в OAuth2 есть stream «Авторизация», когда stream «Неявный» работает так хорошо?
  • библиотеки аутентификации пользователей для node.js?
  • Авторизация Google OAuth 2 - Ошибка: redirect_uri_mismatch
  • Как защитить статические файлы с помощью аутентификации формы ASP.NET в IIS 7.5?
  • Идентификационные данные пользователя MVC 5 Access Identity
  • Давайте будем гением компьютера.