..但我没有登录控制器!
当我抛出自定义错误时,我得到它。
我的意思是..是的。我从一个有一个的示例项目开始我的项目,我删除了帐户控制器,它的视图,甚至任何引用“登录”的代码(甚至web.config中可能提到它的任何条目)和它出现了这个错误。
我还能在哪里检查?
更新:我使用的是Active Directory而不是登录表单。
答案 0 :(得分:1)
只需将这些行添加到您的网络配置文件中:
<authentication mode="Forms">
<forms loginUrl="~/home/Login" timeout="2880"></forms>
</authentication>
在loginUrl中输入正确的登录页面目的地,它将重定向所有标记为[授权]的请求,而不是帐户/登录。
答案 1 :(得分:1)
确定。所以我的问题似乎是因为我使用的是自定义[Authorize]
属性,而且我没有登录页 。我正在使用Active Directory。
根据@Lars&amp; @Shani,显然我需要以某种方式指回一个。
不幸的是,我没有,因为我没有,所以创建一个也没用。所以我提出了一种适合我情况的方法。在我的自定义[Authorize]
属性中,我返回了RedirectToRouteResult
进入我的自定义错误页面:
protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
if (!_authorized)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = "ErrorPage",
action = "Unauthorized"
}));
}
}
我确定有几种不同的方法可以做到这一点,但这就是我现在要做的事情。
答案 2 :(得分:0)
全局搜索@ Html.Action(“Login”,“AccountController”)并删除它。
可能有些视图仍然在AccountController中引用了Login方法。
答案 3 :(得分:0)
检查是否有任何控制器类或操作上面有[Authorize]
属性。
如果用户请求存在属性的操作,如果他们尚未登录,则会将其重定向到登录页面。但如果您没有登录页面(如果您没有需要用户登录)然后你不应该使用这个属性。
答案 4 :(得分:0)
如果您的应用配置为使用表单以外的身份验证机制,如 WIF,请尝试从配置中删除表单身份验证模块。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />