Если вы знаете, как ServiceStack Authentication работы я рекомендую посмотреть, чтобы увидеть, как некоторые из Live Demos that use Authentication работ:
для иллюстрации интеграции аутентификации с ServiceStack см аутентификации-е nabled живые демонстрации ниже:
- HttpBenchmarks Application
- AWS Auth
- Twitter, Facebook, GitHub, Google , Yahoo, LinkedIn и Credentials Auth
- MVC and WebForms Example
- Twitter, Facebook, GitHub, Google, Yahoo, LinkedIn, VK, учетные данные и для Windows Auth
- Chat
- SocialBootstrap Api
- Twitter, Facebook, Yahoo и полномочия Auth
но в стеке службы, как плагины будут работать, не зная ConnectionString и как пользователь может войти в систему.
ServiceStack не угадывает, если вы используете RDBMS backend data store, вам нужно сообщить ServiceStack registering an OrmLiteAuthRepository, который вам нужно будет передать IDbConnectionFactory
, который настроен на DB ConnectionString и тип DB, который вы хотите использовать, например.г:
container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(
dbConnectionString, PostgreSqlDialect.Provider));
container.Register<IAuthRepository>(c =>
new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));
//Create any UserAuth tables that are missing
container.Resolve<IAuthRepository>().InitSchema();
Аутентификация с существующей базой данных
Но если вы хотите, чтобы проверить подлинность с существующей базой данных, вы не можете использовать ServiceStack в существующем Идент.польз Хранилище и вместо этого будут необходимы implement a Custom Auth Provider реализацией TryAuthenticate()
для проверки имени пользователя и пароль к вашей базе данных самостоятельно.
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService,
string userName, string password)
{
//Add here your custom auth logic (database calls etc)
//Return true if credentials are valid, otherwise false
}
public override IHttpResult OnAuthenticated(IServiceBase authService,
IAuthSession session, IAuthTokens tokens,
Dictionary<string, string> authInfo)
{
//Fill IAuthSession with data you want to retrieve in the app eg:
session.FirstName = "some_firstname_from_db";
//...
//Call base method to Save Session and fire Auth/Session callbacks:
return base.OnAuthenticated(authService, session, tokens, authInfo);
//Alternatively avoid built-in behavior and explicitly save session with
//authService.SaveSession(session, SessionExpiry);
//return null;
}
}