【发布时间】:2013-02-12 11:12:29
【问题描述】:
我正在研究 ServiceStack 的授权功能,并希望使用 Couchbase 作为我的数据存储。我知道 Couchbase 没有 IUserAuthRepository 实现,所以我必须自己开发,这不是问题。
我遇到的问题是,如果我按原样存储内置 UserAuth 对象,CB 它使用 Id 字段作为文档标识符。这是一个问题,因为我认为标识符应该是特定于对象类型的,否则需要一个单独的“桶”来防止不同对象之间的 id 冲突。除非必须,否则我真的不想拥有很多桶。
我的偏好是将文档 ID 设置为对象的类型加上对象特定的标识符。
例如使用 ID“UserAuth_1234”或使用用户名“UserAuth_MikeGoldsmith”
我尝试为不同的应用程序对象重复使用存储桶的假设是否有效,或者我应该考虑每个对象类型/命名空间的存储桶?
欢迎 Couchbase 和 ServiceStack 爱好者的任何指导。
谢谢
其他信息
好的,所以根据 John 的回答,我将假设我的对象类型的附加属性是有效的。
我发现了这个 post,其中 Mythz 建议 BootStrapApi 示例扩展了 AuthUser具有自定义属性。但是,在我看来,AuthUser 似乎被持久化了两次,第一次是 AuthUser,然后是 User 对象(两次都使用 OrmLiteAuthRepository)。我说的对吗?
本质上,我想利用 SS 身份验证功能,但控制将保存到 Couchbase 中的 POCO 对象。如果可能的话,有人可以给出一些方向吗?如果可以,我需要实现/挂钩吗?
我尝试实现 IUserAuthRepository 的 Couchbase 版本,但它使用 UseAuth 具体类型,因此我无法使用我自己的对象。
我也尝试挂接到AuthUserSession 的OnAuthenticated 方法,但此时UserAuth POCO 将使用寄存器IUserAuthRepository 持久化。
我很高兴使用CredentialsAuthProvider,因为我只需要用户名/密码身份验证。以后可能会添加更多内容。
再次感谢!
【问题讨论】: