2016-07-08 6 views
2

asp.net 코어에서 작업 중이므로 일부 내용을 이해하지 못합니다. mvc.net 5 예를 들어 우리는 필터링과 같은 행동 AuthorizeAttribute에서 클래스를 생성과 행동과 설정 속성 권한을 부여 할 수 있습니다 :ASP.NET 코어의 사용자 지정 특성

public class AdminAuthorize : AuthorizeAttribute { 
     public override void OnAuthorization(AuthorizationContext filterContext) { 
      base.OnAuthorization(filterContext); 
      if (filterContext.Result is HttpUnauthorizedResult) 
       filterContext.Result = new RedirectResult("/Admin/Account/Login"); 
     } 
    } 

하지만 asp.net 코어에 우리가하지 않아도 AuthorizeAttribute ... 을 어떻게 내가 asp.net 핵심 사용자 지정 작업에 대해 이렇게 필터를 설정할 수 있습니까?

답변

7

인증 미들웨어와 Authorize attirbute를 사용하여 로그인 페이지를 리디렉션 할 수 있습니다. 귀하의 경우에도 AuthenticationScheme을 사용하는 것이 합리적입니다.

먼저 사용 (난 가정 당신이 쿠키 미들웨어를 사용하려는 경우) 쿠키 인증 미들웨어 :

 app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationScheme = "AdminCookieScheme", 
      LoginPath = new PathString("/Admin/Account/Login/"), 
      AccessDeniedPath = new PathString("/Admin/Account/Forbidden/"), 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true, 
      CookieName="AdminCookies" 
     }); 

하고이 계획에 Authorize 속성을 사용

[Authorize(ActiveAuthenticationSchemes = "AdminCookieScheme")] 

는 또 다른 옵션은 관리자를 분리해서하는 UseWhen을 사용하고 있습니다 기본 인증 :

 app.UseWhen(x => x.Request.Path.Value.StartsWith("/Admin"), builder => 
     { 
      builder.UseCookieAuthentication(new CookieAuthenticationOptions() 
      { 
       LoginPath = new PathString("/Admin/Account/Login/"), 
       AccessDeniedPath = new PathString("/Admin/Account/Forbidden/"), 
       AutomaticAuthenticate = true, 
       AutomaticChallenge = true 
      }); 
     }); 

그리고 나서 Authorize 속성을 사용하십시오.

+0

다른 방법이 있습니까? – Moein

+0

인증 미들웨어가없는 또 다른 방법이 있다면 인증 목적으로 "아니오"라고 말합니다. 하지만 분기 (admin, default 등)에는'MapWhen '과 같은 다른 방법이있을 수 있습니다. –