Как реализовать аутентификацию и авторизацию с помощью RavenDb в приложении MVC?

Хотя я привык использовать стандартного поставщика членства 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, а для аутентификации с помощью форм ), и правильно ли я лаю?

6
задан Phil.Wheeler 30 June 2012 в 12:54
поделиться