Jak mogę zapisać coś za pomocą FormsAuthentication? Nie chcę przechowywać UserId za pośrednictwem adresów URL.ASP.NET MVC 3 przy użyciu uwierzytelniania
Na przykład, teraz mam ten kod:
//UserController class:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (repository.ValidateUser(model.Login, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Login, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Project", "Index");
}
}
else
{
ModelState.AddModelError("", "Incorrect name or password.");
}
}
return View(model);
}
ProjectController
klasa:
public ViewResult Index()
{
return View(repository.GetUserProjects(
this.ControllerContext.HttpContext.User.Identity.Name));
}
ProjectRepository
:
ProjectsContext context = new ProjectsContext();
UsersContext uCnt = new UsersContext();
public IEnumerable<Project> GetUserProjects(String username)
{
if (String.IsNullOrEmpty(username))
throw new ArgumentNullException("username", "Login is empty");
return this.uCnt.Users
.FirstOrDefault(u => u.Login == username)
.Projects
.ToList();
}
ProjectController i ProjectRepository nie wygląda dobrego kodu. .. Może ktoś może doradzić, jak przechowywać identyfikator użytkownika bez używania UR L's? Najlepszym sposobem, aby to zrobić, jest zapisywanie identyfikatorów podczas autoryzacji. Nie znaleziono żadnych obiektów w User.Identity to zrobić ...
UPD
błagam o ułaskawienie, ale zapomniałem powiedzieć, że używam MVC-3 z widokiem maszynki. I ten ID użytkownika nie jest ciągiem znaków (User.Identity.Name to ciąg znaków) może to być identyfikator GUID lub może mój własny obiekt ...
To robi centy ... Spróbuję to pojutrze. – RAMe0
Pierwsza część, w której zapisano UserId w UserData, wydaje się niekompletna. Czy ktoś może wyjaśnić lub zawinąć ten kod we właściwej klasie, dzięki czemu mogę zobaczyć, gdzie ten kod się znajduje? Dzięki. –