Làm cách nào tôi có thể lưu nội dung nào đó bằng cách sử dụng FormsAuthentication? Tôi không muốn lưu trữ UserId thông qua URL.ASP.NET MVC 3 bằng cách sử dụng xác thực
Ví dụ, bây giờ tôi có mã này:
//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
lớp:
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 và ProjectRepository không trông giống như mã tốt. .. Có thể ai đó có thể tư vấn, cách lưu trữ UserID mà không cần sử dụng UR L? Cách tốt nhất để làm điều này là lưu ID trên autorisation, tôi nghĩ. Tôi không tìm thấy bất kỳ tài sản trong User.Identity để làm điều này ...
UPD
Tôi cầu xin sự tha thứ, nhưng tôi quên nói rằng tôi đang sử dụng MVC-3 với Razor view. Và UserId đó không phải là một chuỗi (User.Identity.Name là một chuỗi) nó có thể là GUID hoặc có thể là đối tượng của riêng tôi ...
Thats làm cho xu ... Tôi sẽ thử nó ngày sau khi ngày mai. – RAMe0
Phần đầu tiên bạn lưu UserId trong UserData có vẻ không đầy đủ. Ai đó có thể giải thích hoặc bọc mã đó trong lớp thích hợp để tôi có thể thấy mã đó sống ở đâu? Cảm ơn. –