web.config中的重定向页面,用于抛出某个异常

时间:2014-03-05 15:20:20

标签: c# asp.net-mvc web-config

我有一个MVC解决方案,可以根据登录用户对某些URL进行授权。

我通过在父控制器上使用受保护的方法来管理此问题,该方法检查用户是否是管理员。这是代码:

[Authorize]
public abstract class ConfigurationController<E> : Controller where E : IPersistentVM, new()
{
    //SOME OTHER CODE RIGHT HERE
    protected ActionResult CheckPermission(string url, SPDCSS.Model.Rules.Enums.Permission.Permissions permission)
    {
        var user = Helper.GetLoggedInUser();
        if (user.UserTypeId == (int)SPDCSS.Model.Rules.Enums.UserType.UserTypes.Administrator)
        {
            return View(url);
        }
        throw new UnauthorizedAccessException("Access Denied.");
    } 
}

然后,每个继承的类都以这种方式调用此方法:

namespace SPDCSS.Management.Web.Application.Controllers.Configuration
{
    public class ChartController : ConfigurationController<ChartVM>
    {
        public ActionResult Chart()
        {
            return CheckPermission("~/Views/Configuration/Chart.cshtml",M.Enums.Permission.Permissions.Chart);
        }
        //MORE CODE HERE... 
    }
}

问题在于,当我抛出此异常时,我想重定向特定视图,我看到大多数人都在web.config file中执行此操作。我是这样做的,但是没有用:

<system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="~/Views/Shared/Error.cshtml">
      <error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml" />
    </customErrors>
    <!-- # some other code # -->
</system.web>

我想也许,问题在于我指定的状态代码,但我不知道在那里使用什么。关于问题所在的任何想法?

0 个答案:

没有答案