【问题标题】:ServiceStack authentication database schema change?ServiceStack 身份验证数据库架构更改?
【发布时间】:2015-10-26 05:47:00
【问题描述】:

我想知道我们是否可以修改 ServiceStack 身份验证生成的 UserAuth、UserAuthDetails 等架构?现有 UserAuth 模式需要更多字段。谢谢。

【问题讨论】:

    标签: authentication servicestack


    【解决方案1】:

    根据您的 UserAuthProvider,您可以在 AppHost 中注册 UserAuth 存储库时指定使用自定义/扩展 UserAuth:

    public void Configure(Container container)
    {
        //...
        var authRepo = new OrmLiteAuthRepository<CustomUserAuth, UserAuthDetails>(dbFactory);
        container.Register<IUserAuthRepository>(authRepo);
        authRepo.InitSchema();
    }
    

    CustomUserAuth 是您自己的 POCO,其中包含您要存储在基础 UserAuth RDBMS 表中的附加字段,例如:

    public class CustomUserAuth : UserAuth
    {
        public string CustomField1 { get; set; }
    }
    

    有关extend ServiceStack Auth 的其他方式,另请参阅此先前的答案。

    【讨论】:

    • 嗨,我已经阅读了“如何扩展 ServiceStack 身份验证”线程来扩展 UserAuth 表的目的。我可以问我在哪里应用这个吗? userAuth.Set(新地址 { ... }); var address = userAuth.Get();我的意思是,这个 userAuth 是什么?谢谢。
    • @Isley 我已将答案扩展为有关使用您自己的继承 UserAuth 的 CustomUserAuth 的更多信息。
    • 非常感谢。根据您的指示,我已经想通了。
    • 抱歉,还有一个问题。当我尝试注册到自定义的用户表时,localhost:55440/api/json/reply/Register 抛出 500 错误:“ResponseStatus”:{“ErrorCode”:“InvalidCastException”,“消息”:“无法将“ServiceStack.Auth.UserAuth”类型的对象转换为type 'SOAMS.Api.ServiceModel.Types.User'.", 我怎样才能将它引用给 User 而不是 UserAuth?
    • @Isley 为任何新问题/问题打开一个新问题。还要避免在 cmets 中转储堆栈跟踪。由于这与您在新问题中发布堆栈跟踪的原始问题不同,否则如果它为您的原始问题提供更多上下文,请编辑问题以发布堆栈跟踪。另外不要忘记将回答您问题的答案标记为完整以关闭问题。
    猜你喜欢
    • 2018-07-13
    • 2015-08-13
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多