Хотя я привык использовать стандартного поставщика членства ASP.Net для новых веб-приложений MVC, в последнее время я получаю удовольствие от использования RavenDb, но я все еще не верю, что у меня есть представление о передовой практике для реализации аутентификация пользователей и авторизация ролей.
Код, которым я заменил методы Register и Logon в AccountController, выглядит следующим образом:
[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, а для аутентификации с помощью форм ), и правильно ли я лаю?