Si bien estoy acostumbrado a utilizar el proveedor de membresía estándar de ASP.Net para las nuevas aplicaciones web de MVC, últimamente me ha gustado el uso de RavenDb, pero sigo sin creer que conozca las mejores prácticas. para implementar autenticación de usuario y autorización de función.¿Cómo se implementaría la autenticación y la autorización con RavenDb en una aplicación MVC?
El código he sustituido mis Registro e inicio de sesión con métodos en el AccountController tiene el siguiente aspecto:
[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...
que he visto el código de proveedor RavenDb membresía que un número de personas que han referenciado en puestos similares o preguntas, pero también parece haber una cantidad de personas que consideran que esto es exagerado y aprovechan una API ineficiente para un almacén de datos que no necesita la mayor parte de lo que se proporciona en él.
Entonces, ¿cuál es la mejor estrategia de arquitectura/diseño para la autenticación de RavenDb (no para OAuth, pero Autenticación de formularios) y estoy ladrando en el árbol correcto?
He creado un proveedor (beta) para RavenDb aquí: https://github.com/jgauffin/griffin.mvccontrib/tree/master/source/Griffin.MvcContrib.RavenDb También está disponible como paquete nuget: ' griffin.mvccontrib.ravendb' Uso: https://github.com/jgauffin/griffin.mvccontrib/wiki/Membershipprovider – jgauffin
Gracias. He visto un par de enfoques sobre este tema y Ayende también tiene paquetes (como extensiones, hablando libremente) que abordan la autenticación. He escrito un blog sobre mis hallazgos aquí: http://mytechworld.officeacuity.com/index.php/2012/07/authentication-and-authorization-in-mvc-projects-using-ravendb –