作为ServiceStack的一个非常基本的用户,我试着试一试,但有些事我似乎无法正确理解......
我正在使用此代码,以便在ServiceStack身份验证中使用NHibernate作为数据层:
https://gist.github.com/balexandre/f1217ae8e2a2b1045d47
我已经修改了CreateUserAuth
以在我自己的表中创建一个新用户(因为我确实需要为用户提供更多数据并且元数据选项是不够的),我已经扩展到此代码的行201:
https://gist.github.com/balexandre/f1217ae8e2a2b1045d47#file-customuserauthrepository-cs-L201
newUser
被发回,我确实需要获取userId(newUser.Id
),这样我就可以在我的表中创建一个新用户,其用户ID与UserAuth相同(为了正确保存) /在CustomUserSession.cs中编辑并使用登录信息填充我的用户,如几个示例所示。
如何获得正确的userId?
我真的以为我可以将UserAuth对象附加到我的自定义用户(newLocalUser.UserAuthInfo
),但我总是在数据库中找到User.Id == 0
并在newUser.Id
电话后获得Session.Save(new UserAuthNHibernate(newUser))
也始终为0
。
你们如何将新生成的UserAuth UserId附加到自己的表中?或者你只是使用电子邮件地址?
原始问题可用Google Groups。
答案 0 :(得分:0)
我没有在CreateUserAuth
方法中看到设置newUser.Id
属性的任何代码。也许像是......
var newUserAuthNhibernate = new UserAuthNHibernate(newUser);
Session.Save(newUserAuthNhibernate);
newUser.Id = newUserAuthNhibernate.Id;
需要吗?基于gist中的当前代码,看起来NHibernate会在Session.Save()
中创建的UserAuthNHibernate的新实例上设置Id字段,但我看不到那个Id(由DB / NHibernate生成)将基于newUser
方法返回的当前CreateUserAuth
实例。也许它发生在UserAuthNHibernate类中?