Khi người dùng đăng nhập vào trang web của tôi nơi tôi sử dụng Xác thực Mẫu thì làm cách nào tôi có thể ngăn người dùng tiếp tục Đăng nhập & Trang đăng ký nếu anh ta có allready đăng nhập & đăng ký.Làm cách nào để ngăn người dùng truy cập Đăng nhập/Đăng ký và các trang không được xác thực khác trên ứng dụng MVC3?
6
A
Trả lời
5
Hai cách "ra khỏi đỉnh đầu của tôi":
1 - Tuỳ chỉnh Action Filter
mà chuyển hướng người dùng từ trang nếu họ đang đăng nhập
public class RedirectAuthenticatedRequests : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(filterContext.HttpContext.Request.IsAuthenticated) {
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new {
controller = "SomeController",
action = "SomeAction"
}
));
}
base.OnActionExecuting(filterContext);
}
}
2 - đơn giản. kiểm tra trong phương thức hành động login
nếu người dùng đã đăng nhập.
if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView");
5
Các lối thoát dễ dàng được kiểm tra trong phương pháp điều khiển (đăng nhập/đăng ký) nếu người dùng được xác thực, và nếu nó là chuyển hướng người dùng đến trang web mà bạn muốn:
Something như thế này cho các trang đăng nhập (cùng với Đăng ký):
//
// GET: /Login/Index
public ActionResult Index()
{
if(User.Identity.IsAuthenticated){
//redirect to some other page
return RedirectToRoute("Home", "Index");
}
return View();
}
0
Bạn có thể kiểm tra thuộc tính User.Identity.IsAuthenticated và chuyển hướng chúng một cách thích hợp.
Tôi muốn tạo ra một thuộc tính có nguồn gốc [AuthorizeAttribute]. – Rhapsody
@Rhapsody bạn có thể giải thích các bước để có Thuộc tính đó là gì? – updev
@Xám bạn có nghĩa là ActionFilter trên Global.aspx? – updev