첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

■ ActionFilterAttribute 클래스 : 액션 필터 사용하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


SessionCheckActionFilterAttribute.cs

 

 

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.Filters;

using Microsoft.AspNetCore.Routing;

 

namespace TestProject

{

    /// <summary>

    /// 세션 체크 액션 필터 어트리뷰트

    /// </summary>

    public class SessionCheckActionFilterAttribute : ActionFilterAttribute

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 액션 실행시 처리하기 - OnActionExecuting(context)

 

        /// <summary>

        /// 액션 실행시 처리하기

        /// </summary>

        /// <param name="context">컨텍스트</param>

        public override void OnActionExecuting(ActionExecutingContext context)

        {

            if(context.HttpContext.Session.GetString("Name") == null)

            {

                context.Result = new RedirectToRouteResult

                (

                    new RouteValueDictionary

                    (

                        new

                        {

                            action     = "Index",

                            controller = "Home"

                        }

                    )

                );

            }

 

            base.OnActionExecuting(context);

        }

 

        #endregion

    }

}

 

 

Controllers/HomeController.cs

 

 

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Mvc;

 

namespace TestProject.Controllers

{

    /// <summary>

    /// 홈 컨트롤러

    /// </summary>

    public class HomeController : Controller

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 인덱스 페이지 처리하기 - Index()

 

        /// <summary>

        /// 인덱스 페이지 처리하기

        /// </summary>

        /// <returns>액션 결과</returns>

        public IActionResult Index()

        {

            HttpContext.Session.SetString("Name", "James");

 

            return View();

        }

 

        #endregion

        #region 개인 페이지 처리하기 - Private()

 

        /// <summary>

        /// 개인 페이지 처리하기

        /// </summary>

        /// <returns>액션 결과</returns>

        [SessionCheckActionFilter]

        public IActionResult Private()

        {

            return View();

        }

 

        #endregion

    }

}

 

 

Views/Home/Index.cshtml

 

 

<p>인덱스 페이지</p>

<hr />

 

 

Views/Home/Private.cshtml

 

 

@using Microsoft.AspNetCore.Http

<p>개인 페이지</p>

<hr />

<p>@Context.Session.GetString("Name")</p>

 

 

Startup.cs

 

 

using Microsoft.AspNetCore.Builder;

using Microsoft.AspNetCore.Hosting;

using Microsoft.Extensions.Configuration;

using Microsoft.Extensions.DependencyInjection;

using Microsoft.Extensions.Hosting;

 

namespace TestProject

{

    /// <summary>

    /// 시작

    /// </summary>

    public class Startup

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 구성 - Configuration

 

        /// <summary>

        /// 구성

        /// </summary>

        public IConfiguration Configuration { get; }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - Startup(configuration)

 

        /// <summary>

        /// 생성자

        /// </summary>

        /// <param name="configuration">구성</param>

        public Startup(IConfiguration configuration)

        {

            Configuration = configuration;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 서비스 컬렉션 구성하기 - ConfigureServices(services)

 

        /// <summary>

        /// 서비스 컬렉션 구성하기

        /// </summary>

        /// <param name="services">서비스 컬렉션</param>

        public void ConfigureServices(IServiceCollection services)

        {

            services.AddSession();

 

            services.AddControllersWithViews();

        }

 

        #endregion

        #region 구성하기 - Configure(app, environment)

 

        /// <summary>

        /// 구성하기

        /// </summary>

        /// <param name="app">애플리케이션 빌더</param>

        /// <param name="environment">웹 호스트 환경</param>

        public void Configure(IApplicationBuilder app, IWebHostEnvironment environment)

        {

            if(environment.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

 

                app.UseHsts();

            }

 

            app.UseHttpsRedirection();

 

            app.UseStaticFiles();

 

            app.UseRouting();

 

            app.UseAuthorization();

 

            app.UseSession();

 

            app.UseEndpoints

            (

                endpoints =>

                {

                    endpoints.MapControllerRoute

                    (

                        name    : "default",

                        pattern : "{controller=Home}/{action=Index}/{id?}"

                    );

                }

            );

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

※ 패키지 설치 : Microsoft.AspNetCore.Session

 

1. 비주얼 스튜디오를 실행한다.

2. 비주얼 스튜디오에서 [도구] / [NuGet 패키지 관리자] / [패키지 관리자 콘솔] 메뉴를 클릭한다.

3. [패키지 관리자 콘솔]에서 아래 명령을 실행한다.

 

 

Install-Package Microsoft.AspNetCore.Session

 

 

728x90
반응형

'.NetCore > ASP.NET MVC' 카테고리의 다른 글

[.NETCORE/ASP.NET MVC] ActionFilterAttribute 클래스 : 액션 필터 사용하기  (0) 2020.11.17
[.NETCORE/ASP.NET MVC] ResponseCompressionBuilderExtensions 클래스 : UseResponseCompression 확장 메소드를 사용해 응답 압축 사용하기  (0) 2020.11.17
[.NETCORE/ASP.NET MVC] 누겟 설치 : Microsoft.AspNetCore.ResponseCompression  (0) 2020.11.17
[.NETCORE/ASP.NET MVC] RazorPage 클래스 : Context 속성을 사용해 세션 데이터 구하기  (0) 2020.11.17
[.NETCORE/ASP.NET MVC] SessionExtensions 클래스 : SetString/GetString 확장 메소드를 사용해 세션 데이터 설정하기/구하기  (0) 2020.11.17
[.NETCORE/ASP.NET MVC] HostingAbstractionsWebHostBuilderExtensions 클래스 : UseWebRoot 확장 메소드를 사용해 웹 루트 경로 설정하기  (0) 2020.11.16
[.NETCORE/ASP.NET MVC] UseMiddlewareExtensions 클래스 : UseMiddleware 확장 메소드를 사용해 응답 가공 미들웨어 등록하기  (0) 2020.11.16
[.NETCORE/ASP.NET MVC] UseMiddlewareExtensions 클래스 : UseMiddleware 확장 메소드를 사용해 종단 미들웨어 등록하기  (0) 2020.11.16
[.NETCORE/ASP.NET MVC] UseMiddlewareExtensions 클래스 : UseMiddleware 확장 메소드를 사용해 요청 가공 미들웨어 등록하기  (0) 2020.11.16
[.NETCORE/ASP.NET MVC] UseMiddlewareExtensions 클래스 : UseMiddleware 확장 메소드를 사용해 컨텐트 생성 미들웨어 등록하기  (0) 2020.11.16
[.NETCORE/ASP.NET MVC] WebHostBuilderIISExtensions 클래스 : UseIISIntegration 확장 메소드를 사용해 IIS 웹 서버를 역전 프록시로 설정하기  (0) 2020.11.16
Posted by 사용자 icodebroker

댓글을 달아 주세요