2

프로젝트에 MVC 3을 사용하고 있습니다. 내 문제는 다음과 같습니다. '뒤로'버튼을 클릭하면 로그인 페이지로 리디렉션됩니다. 로그 아웃 한 후 나는 뒤로 버튼을 클릭하면 브라우저의 캐시에 저장된 이전 페이지의 복사본을 사용자에게 제공한다는 사실을 알고 있습니다. 그래서 제가 한 것은 속성을 추가하는 것입니다. 의도 한 뷰가 렌더링되기 전에 인증을 먼저해야하는 모든 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 
    {