虽然我已经习惯于将标准 ASP.Net Membership Provider 用于新的 MVC Web 应用程序,但我最近对使用 RavenDb 很感兴趣,但我仍然不相信我掌握了实现的最佳实践用户认证和角色授权。
我在 AccountController 中替换了我的 Register 和 Logon 方法的代码如下所示:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
using (IDocumentSession Session = DataDocumentStore.Instance.OpenSession())
{
Session.Store(new AuthenticationUser
{
Name = Email,
Id = String.Format("Raven/Users/{0}", Name),
AllowedDatabases = new[] { "*" }
}.SetPassword(Password));
Session.SaveChanges();
FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
// ...etc. etc.
[HttpPost]
public JsonResult JsonLogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
using (IDocumentSession Session = DataDocumentStore.Instance.OpenSession())
{
book Ok = Session.Load<AuthenticationUser>(String.Format("Raven/Users/{0}", Username)).ValidatePassword(Password);
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
// etc...
我已经看到许多人在类似的帖子或问题中引用的 RavenDb Membership Provider 代码,但似乎也有一些人认为这太过分了,并利用低效的 API 进行数据存储不需要其中提供的大部分内容。
那么 RavenDb 身份验证(不是 OAuth,而是表单身份验证)的最佳架构/设计策略是什么?