servicestack,C#,Asp.net,Sql Server,Authentication,servicestack" /> servicestack,C#,Asp.net,Sql Server,Authentication,servicestack" />

C# ServiceStack中的用户身份验证

C# ServiceStack中的用户身份验证,c#,asp.net,sql-server,authentication,servicestack,C#,Asp.net,Sql Server,Authentication,servicestack,我没有在servicestack中获得身份验证和授权概念。 我一直在看pluralsight教程,但我仍然不了解如何从现有sql server数据库验证用户名和密码。 例如,如果我们使用SQL server对asp.net中的用户进行身份验证。在这里,我们提供了connectionstring,然后在按钮后面编写查询,但在服务堆栈中,在不知道connectionstring和用户如何登录的情况下,插件将如何工作 请帮助我:(如果您不确定ServiceStack身份验证是如何工作的,我建议您看看其

我没有在servicestack中获得身份验证和授权概念。 我一直在看pluralsight教程,但我仍然不了解如何从现有sql server数据库验证用户名和密码。
例如,如果我们使用SQL server对asp.net中的用户进行身份验证。在这里,我们提供了connectionstring,然后在按钮后面编写查询,但在服务堆栈中,在不知道connectionstring和用户如何登录的情况下,插件将如何工作


请帮助我:(

如果您不确定ServiceStack身份验证是如何工作的,我建议您看看其中一些是如何工作的:

要说明与ServiceStack的身份验证集成,请参阅下面启用身份验证的实时演示:

    • Twitter、Facebook、谷歌、LinkedIn和认证认证
    • Twitter、Facebook、GitHub、谷歌、雅虎、LinkedIn和认证认证
    • Twitter、Facebook、GitHub、谷歌、雅虎、LinkedIn、VK、凭据和Windows身份验证
    • Twitter和GitHub OAuth
    • 推特、Facebook、雅虎和认证认证
但在服务堆栈中,插件将如何工作,而不知道connectionstring和用户如何登录

ServiceStack不会猜测,如果您使用的是,您需要告诉ServiceStack您需要通过它传递
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();
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;
    }
}