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