권한을 제어하기 위해 사용자 정의 AuthorizeAttribute
이있는 ASP.NET MVC4 프로젝트가 있습니다. 내 상황을 더 쉽게 설명하기 위해이 문제를 설명하기 위해 거짓 프로젝트를 만들었습니다. 401 코드가 MVC 프로젝트에서 올바르게 처리되지 않았습니다.
using System.Web.Mvc;
using MvcApplication2.Helper;
using MvcApplication2.Models;
namespace MvcApplication2.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new ViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(ViewModel model)
{
Session["ModelValue"] = model.InputValue;
return RedirectToAction("Step2");
}
[MyAuthorize]
public ActionResult Step2()
{
return View();
}
}
}
목적은 내가, 몇 가지 입력을 허용 세션에 값을 저장하고 Step2
로 리디렉션 Index
에서 매우 간단합니다. 세션 값이 1인지 아닌지 내가 2 단계 내 권한 부여 특성이 나의 속성에 대한 코드는 목적은 매우 간단합니다
using System;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication2.Helper
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Session["ModelValue"] == null)
{
return false;
}
else
{
string inputValue = httpContext.Session["ModelValue"] as string;
if (inputValue != "1")
{
return false;
}
else
{
return true;
}
}
}
}
}
입니다 확인합니다.
응용 프로그램을 실행하고 텍스트 상자에 1을 입력하면 step2보기가 표시되고 다른 것을 입력하면 기본 401.0 페이지가 나타납니다.
지금 나는 응용 프로그램이 401 코드를 캡처 할 때, 나는401.htm
의 내용을 볼 희망
<system.web>
<customErrors mode="On" defaultRedirect="~/Error">
<error statusCode="401" redirect="~/401.htm" />
</customErrors>
<compilation debug="true" targetFramework="4.0" />
</system.web>
을 포함하도록 web.config
파일을 열었습니다. 그러나 실제로 서버에서 기본 401 오류 디스플레이가 표시됩니다.
왜 그런가?
http://stackoverflow.com/questions/1679881/asp-net-mvc-user-friendly-401-error –
나는, 이러한 구현을 많이 볼 수 있지만 나는 여전히 web.config 변경이 전혀 작동하지 않는 이유를 이해하려고 노력합니다. – hardywang