2

我正在使用MVC 3作爲我的項目,我的問題是這樣的: 我想讓用戶重定向到登錄頁面,點擊'返回'按鈕註銷後。我知道點擊返回按鈕會給用戶一個存儲在瀏覽器緩存中的前一頁的副本。所以我所做的就是添加屬性登出後點擊'返回'按鈕重定向到登錄頁面

[Authorize] 
[OutputCache(NoStore = true, Duration = 0)] 

每一個的ActionResult或Controller類需要預定視圖渲染之前先認證。首先解決了這個問題,但是當一個頁面(搜索結果頁面)要求網格數據緩存在客戶端瀏覽器中時會產生複雜性,因爲它太大而無法每次獲取。另外,我已經有錨鏈接到所述頁面,所以不允許緩存會渲染一個空網格。

當用戶註銷並嘗試通過「返回」按鈕嘗試轉到「緩存頁面」時,是否有任何方式將其首先路由到登錄頁面?

謝謝!

回答

0

有沒有什麼辦法,當用戶註銷並試圖通過「返回」按鈕,去 「緩存的頁面」被路由到 先登錄頁面?

不,除非您禁用瀏覽器緩存。您無法控制瀏覽器「後退」按鈕。 。

0

我會創造一個幫手/ BaseController.cs這將強制用戶登錄頁面,如果他們還沒有登錄

using System.Text; 
using System.Web.Mvc; 
using System.Collections.Generic; 
namespace Helper 
{ 
public class BaseController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // If session exists 
     if (filterContext.HttpContext.Session != null) 
     { 
      if (this.Session["LoginName"] == null) 
      { 
       filterContext.Result = RedirectToAction("Index", "Login"); 
       return; 
      } 
     } 
     //otherwise continue with action 
     base.OnActionExecuting(filterContext); 
    } 
} 
} 

然後將其添加到頂掉你所有的contollers即:

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using ShieldUser.Models; 
using PagedList; 
using Helper; 

namespace ShieldUser.Controllers 
{ 
    public class UserController : BaseController 
    { 
相關問題