Tôi có một dự án ASP.NET MVC, và tôi muốn có một LoginUrl khác nhau cho các khu vực khác nhau của trang web. Tùy thuộc vào khu vực của trang web, các loại thông tin đăng nhập khác nhau được nhập.LoginUrl khác nhau cho URL khác nhau với ASP.NET MVC và các hình thức xác thực
http://host.com/widget/home
sẽ chuyển hướng người dùng đến http://host.com/widget/logon
.
http://host.com/admin/home
sẽ chuyển hướng người dùng đến http://host.com/admin/logon
.
Cho đến nay, giải pháp tốt nhất mà tôi đã đưa ra, là phải có hình thức Auth loginUrl = "~/tài khoản/Logon" trong web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
Trong bộ điều khiển cho Tài khoản:
public ActionResult LogOn()
{
//redirect depending on the returnUrl?
string returnUrl = ControllerContext.Controller.ValueProvider["ReturnUrl"].AttemptedValue;
if (returnUrl.StartsWith("/widget"))
{
return Redirect(string.Format("/widget/Logon?ReturnUrl={0}", returnUrl));
}
if (returnUrl.StartsWith("/admin"))
{
return Redirect(string.Format("/admin/Logon?ReturnUrl={0}", returnUrl));
}
return View();
}
Có cách nào tốt hơn để thực hiện việc này không?
BTW: bạn chỉ có thể đặt returnUrl làm tham số chuỗi cho phương thức: LogOn (string returnUrl) –