Podczas gdy jestem dobrze przyzwyczajony do korzystania ze standardowego dostawcy członkostwa ASP.Net dla nowych aplikacji internetowych MVC, ostatnio używam RavenDb, ale wciąż nie wierzę, że mam pojęcie o najlepszej praktyce do implementacji uwierzytelniania użytkownika i autoryzacji roli.W jaki sposób uwierzytelnianie i autoryzacja byłyby realizowane za pomocą RavenDb w aplikacji MVC?
Kod Wymieniłem moje metody rejestrowania i logowania się w AccountController wygląda następująco:
[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...
Widziałem kod Provider RavenDb Membership, że wiele osób nie odwołuje się w podobnych stanowisk lub pytania, ale wydaje się też, że jest wielu ludzi, którzy uważają, że jest to przesada i wykorzystują nieefektywny interfejs API dla magazynu danych, który nie potrzebuje większości tego, co jest w nim przewidziane.
Jaka jest najlepsza strategia architektoniczna/projektowa dla uwierzytelniania RavenDb (nie dla OAuth, ale Forms Authentication) i czy szczerzę odpowiednie drzewo?
Zrobiłem dostawcę (beta) dla RavenDb tutaj: https://github.com/jgauffin/griffin.mvccontrib/tree/master/source/Griffin.MvcContrib.RavenDb Jest również dostępny jako pakiet nuget: ' griffin.mvccontrib.ravendb' Sposób użycia: https://github.com/jgauffin/griffin.mvccontrib/wiki/Membershipprovider – jgauffin
Dzięki. Widziałem kilka podejść do tego problemu i Ayende ma również pakiety (takie jak rozszerzenia, luźno mówiąc), które adresują auth. Blogowałem tutaj moje odkrycia: http://mytechworld.officeacuity.com/index.php/2012/07/authentication-and-authorization-in-mvc-projects-using-ravendb –