모든 웹 응용 프로그램에서 비슷한 작업을 수행합니다. 사용자가 인증되었지만 페이지를보기위한 보안 요구 사항을 충족시키지 못하면 HTTP 403 예외가 발생하고 403 예외에 대한 특정보기가 표시됩니다.
이
내 사용자 지정 권한 부여 속성에서 코드 조각입니다 :
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
if (filterContext.HttpContext.Request.IsAuthenticated) {
//If the user is authenticated, but not authorized to view the requested page (i.e. not a member of the correct group), return an HTTP 403 exception.
throw new HttpException(403, string.Format("The user {0} was not authorized to view the following page: {1}", filterContext.HttpContext.User.Identity.Name, filterContext.HttpContext.Request.Url));
} else {
base.HandleUnauthorizedRequest(filterContext);
}
}
그리고 여기에 내가 실제로보기 응답을 수행 내에서 Global.asax에서 조각입니다 (이것은 ErrorController
이 존재하고 다음보기 Error403
라고 가정 :
protected void Application_Error() {
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "Error500";
Response.StatusCode = 500;
Response.TrySkipIisCustomErrors = true;
if (httpException != null) {
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode) {
case 403:
routeData.Values["action"] = "Error403";
break;
case 404:
routeData.Values["action"] = "Error404";
routeData.Values["message"] = httpException.Message;
break;
case 500:
routeData.Values["action"] = "Error500";
break;
}
}
IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
감사합니다. 이것은 매우 도움이되었습니다. –