Tôi có bộ lọc hành động tùy chỉnh, bên trong OnActionExecuting
, tùy thuộc vào tiêu chí nhất định, đăng xuất người dùng và chuyển hướng họ đến trang chủ của trang web. Mã (bị trả lại) cho phần chuyển hướng ở bên dướiĐặt TempData trong ActionFilterAttribute
filterContext.Controller.TempData.Add("key", "Message");
filterContext.Result = new RedirectResult("/");
Như trên, tôi cũng thiết lập thông báo tempData. Vì người dùng đã đăng xuất, khi họ truy cập trang chủ, thuộc tính [Authorize]
sẽ chuyển hướng họ đến trang GET đăng nhập. Trên giao diện đăng nhập, tôi đang hiển thị bất kỳ tin nhắn nào từ bên trong tempData. Tuy nhiên trong tình huống này tempData trống.
Hành vi này rất giống với cách POST đăng nhập của tôi hoạt động (nếu không hợp lệ, nó chuyển hướng về nhà, chuyển hướng để đăng nhập và hiển thị thông báo tempData được đặt trong bài đăng nhập). Mã này có thể được nhìn thấy dưới đây
TempData.Add("key", errorMessage);
return Redirect("/"));
Lý do tôi đang làm nó theo cách này, chứ không phải là chuyển hướng cụ thể đến trang đăng nhập được vì mã này được phân phối trên nhiều trang web, vì vậy chúng tôi không biết những gì url đăng nhập GET là .
Có ai có bất kỳ thông tin nào về lý do tại sao tính năng này hoạt động cho POST đăng nhập chứ không phải cho Chuyển hướng ActionFilter không?
Edit:
Nếu tôi loại bỏ các cuộc gọi logout trong bộ lọc hành động tùy chỉnh, TempData vẫn đặt trong hành động Trang chủ - tuy nhiên điều này không giải thích lý do tại sao nó hoạt động cho đăng nhập POST nhưng không phải là lọc hành động?
Đó là hành vi sau tôi - tôi muốn khách hàng yêu cầu URL mới. Lý do TempData trống là do sự từ bỏ phiên. – Rob