[Core 3.1] ASP.NET Core ActionFilter를 이용한 Session 체크
2020. 2. 20. 18:22
728x90
반응형
Session을 이용해서 유저를 관리할 경우, 각 Controller에서 세션의 유무를 체크해야 하는 경우가 발생합니다.
그때마다 HttpContext.Session.GetString 을 이용해서 세션이 존재하는지 체크하는 것 보다는,
ActionFilter를 이용해서 체크 할 수 있습니다.
ActionFilter 추가
CheckSession.cs 파일을 추가해서 아래와 같이 코딩하였습니다.
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Routing;
public class CheckSession : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var ctx = context.HttpContext;
if (ctx.Session.GetString("_Name") == null)
{
context.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Login", controller = "Home" }));
}
base.OnActionExecuting(context);
}
}
ActionFilterAttribute 를 상속 받아, OnActionExecuting 메소드를 override 해줍니다.
해당 메소드 안에 세션을 체크하고, 체크 뒤 null 일 경우 RedirectToRouteResult 메소드를 이용해서 다른 페이지로 이동시켜 주었습니다.
Controller 에 Filter 추가
public class AlarmController : Controller
{
[CheckSession]
public IActionResult Index()
{
return View();
}
}
[CheckSession] 을 추가 해줌으로써, 해당 ActionFilter 기능을 이용 할 수 있습니다.
728x90
'.NET' 카테고리의 다른 글
[.NET Core] ASP.NET Core 3.1 - NLog 설정 및 사용 방법 (0) | 2020.05.15 |
---|---|
[Core 3.1] CentOS7 - .NET Core SDK 설치하기 (0) | 2020.02.25 |
[.NET Core] ASP.NET Core 3.1 Areas(영역) 추가 방법 (0) | 2020.02.18 |
[MVC] Web API Request 데이터를 배열로 받을때 (0) | 2020.01.30 |
[Core 3.1] C# Dapper 설치 및 사용 (0) | 2020.01.21 |