이렇게하는 방법에는 여러 가지가 있습니다. 여기 하나의 아이디어가 있습니다.
public class ControllerBase : Controller
{
public ControllerBase()
: base()
{
this.VerifySession();
}
/// <summary>
/// Indicates whether the session must be active and contain a valid customer.
/// </summary>
protected virtual bool RequiresActiveSession
{
get { return true; }
}
public void VerifySession()
{
if (this.RequiresActiveSession && Session["UserId"] == null)
{
Response.Redirect(Url.Action("LoginPage"));
}
}
}
public class HomeController : ControllerBase
{
protected override bool RequiresActiveSession
{
get
{
return true;
}
}
public ActionResult Index()
{
return View();
}
}
기본적으로 세션 유효성 검사를 처리 할 컨트롤러 기반이 있습니다. 그리고 그것으로부터 상속 한 컨트롤러는 세션의 유효성을 검사할지 여부를 지정할 수 있습니다.
또는
당신이 당신의 컨트롤러 작업을 실행하기 전에 컨트롤러 또는 행동 특성 및 처리 파이프 라인에 코드를 후크 할 수있는 사용자 정의 Action Filter를 만들 수 있습니다.
기본 클래스를 사용하지 않는 것이 좋습니다. 매우 지저분하며, 기본 클래스를 사용하는 것이 좋습니다. 그렇지 않으면 웹 API 예를 들어 – Onkelborg
나는베이스 컨트롤러에서 파생되는 대신 작업 필터의 사용을 선호합니다. 인증 조치 필터의 예제는 다음을 참조하십시오. http://stackoverflow.com/questions/996387/asp-net-mvc-iauthorizationfilter-attribute-prefered-security-check-for-login – Arjen
감사합니다 !! 커스텀 액션 필터는 갈 길처럼 들립니다! 고위 개발자는 대부분의 사람들이 하이재킹의 경우 세션 변수를 사용하는 것과 동일한 방식으로 쿠키에 사용자 데이터를 저장하는 것을 방지합니다. – user1345632