2016-10-10 16 views
0

Я не получил концепцию аутентификации и авторизации в сервисной программе. Я наблюдал за учебником по множественным числам, но все же я не понимаю, как мы можем аутентифицировать имя пользователя и пароль из нашей существующей базы данных sql-сервера.
Например, если мы аутентифицируем пользователя в asp.net с SQL-сервером. там мы обеспечиваем ConnectionString и тогда мы будем писать запросы за кнопкой, но в стеке службы, как плагины будут работать, не зная ConnectionString и как пользователь может войти в систему.Аутентификация пользователя в ServiceStack

Пожалуйста, помогите мне :(

ответ

2

Если вы знаете, как ServiceStack Authentication работы я рекомендую посмотреть, чтобы увидеть, как некоторые из Live Demos that use Authentication работ:

Live Demos

для иллюстрации интеграции аутентификации с ServiceStack см аутентификации-е nabled живые демонстрации ниже:

но в стеке службы, как плагины будут работать, не зная 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; 
    } 
} 
Смежные вопросы