문제

ASP.NET MVC 5 응용 프로그램에서 구현하려는 슈퍼 간단한 인증 특성이 있으며 문제가 발생합니다. 컨트롤러 내의 특정 조치 (예 : 로그인 양식 및 홈 페이지)를 제외하고는 속성을 전역 적으로 적용하고 싶습니다.

운이없는 [OverrideAuthentication] 속성으로 액션을 꾸미시 시도 시도했습니다. 응용 프로그램이 로그인 양식에서 여전히 인증을 실행 중이므로 리디렉션 루프 오류가 발생하며 로그인 양식을 통해 다시 리디렉션하려고 시도합니다.

다른 누구도이 행동을 보이고 있습니까? 내가 여기서 어떤 것을 채워 졌는지 어떤 생각?

예를 들어, 현재 유체화되지 않은 슈퍼 간단한 필터를 만들었습니다.

public class BasicAuthenticationAttribute
    : ActionFilterAttribute, IAuthenticationFilter
{

    public void OnAuthentication(AuthenticationContext filterContext)
    {
        throw new NotImplementedException();
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
        throw new NotImplementedException();
    }
}
.

컨트롤러 / 액션을 다음과 같이 장식하면 다음과 같이하십시오 :

[BasicAuthentication]
public class AccountController : Controller
{
    [HttpGet]
    [OverrideAuthentication]
    public ActionResult Login()
    {
        return View();
    }
}
.

해당 조치가 전혀 인증 코드를 실행하지 않아도 되더라도 로그인 작업으로 탐색 할 때 구현되지 않은 예외를 얻지 못합니다. 나는 재정의가 어떻게 작동하는지 오해 했습니까?

도움이 되었습니까?

해결책

나는 당신이 승인을 가진 인증을 가진 인증을 가지고 있다고 생각합니다 (많은 사람들이하는 것).인증시 인증이 모든 요청이 아닌 로그인시에만 발생하기 때문에 [BasicAuthenticationAttribute]를 만들고 글로벌을 등록하는 것이 의미가 없습니다.

권한 부여는 사용자가 특정 작업을 수행하기 위해 필요한 권한이 필요한지 여부를 확인하기 위해 사용자가 로그인 한 후에 수행되는 이후 수행되며 전 세계적으로 승인을 수행하는 것이 좋습니다.MVC의 권한 부여는 [AuthorizeAttribute]에서 처리하고 권한 검사가 완료된 방식을 사용자 정의 해야하는 경우 상속 할 수 있습니다.글로벌 필터로 등록 할 수도 있습니다.

[AllowAnonymousAttribute]는 [AuthorizeAtribute]와 함께 작동하며 기본적으로 승인 수표를 건너 뛰라고 알려줍니다.[AllowAnonymousAttribute]는 [AuthorizeAttribute]와 함께 사용하지 않는 한 효과가 없을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top