Mentre sono abituato a utilizzare il provider di appartenenza ASP.Net standard per le nuove applicazioni Web MVC, ultimamente ho iniziato a utilizzare RavenDb, ma non credo ancora di avere una conoscenza delle migliori pratiche per l'implementazione dell'autenticazione utente e dell'autorizzazione dei ruoli.Come implementare l'autenticazione e l'autorizzazione utilizzando RavenDb in un'app MVC?
Il codice ho sostituito i miei metodi registro e di accesso con l'AccountController si presenta come la seguente:
[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...
Ho visto il codice di provider RavenDB appartenenza che un certo numero di persone hanno fatto riferimento in post o simili domande, ma sembra anche che ci sia un numero di persone che considerano questo aspetto eccessivo e sfruttano un'API inefficiente per un archivio dati che non ha bisogno della maggior parte di ciò che viene fornito al suo interno.
Quindi qual è la migliore strategia di architettura/progettazione per l'autenticazione RavenDb (non per OAuth, ma l'autenticazione basata su form) e sto abbaiando nell'albero giusto?
Ho creato un provider (beta) per RavenDb qui: https://github.com/jgauffin/griffin.mvccontrib/tree/master/source/Griffin.MvcContrib.RavenDb È disponibile anche come pacchetto nuget: ' griffin.mvccontrib.ravendb' Utilizzo: https://github.com/jgauffin/griffin.mvccontrib/wiki/Membershipprovider – jgauffin
Grazie. Ho visto un paio di approcci a questo problema e Ayende ha anche bundle (come le estensioni, vagamente parlando) che indirizzano l'autenticazione. Ho scritto qui i miei risultati: http://mytechworld.officeacuity.com/index.php/2012/07/authentication-and-authorization-in-mvc-projects-using-ravendb –