Sai*_*uli 16 asp.net-mvc authorize-attribute asp.net-mvc-3
今天我开始玩MVC 3 Beta.从默认MVC 3模板开始应用程序,在Home控制器中添加了一个新操作,如下所示(带有视图)
[Authorize]
public ActionResult Secured()
{
ViewModel.Message = "This is secured area, only authenticated users should be here.";
return View();
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试导航到安全操作时,我得到404页面未找到错误.
这是我的web.config中的身份验证部分.
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,Authorize属性应该导致401未经授权的HTTP响应,应该由身份验证处理程序拦截并将我重定向到loginUrl.哪个应该导致Account/LogOn操作.
我的MVC 2应用程序按预期工作,并将我带到Account/LogOn操作,我错过了什么?或者这是MVC 3 beta中的错误?
Fia*_*acc 15
它不再适用于RTM
你需要添加
<add key="loginUrl" value="~/Account/LogOn" />
Run Code Online (Sandbox Code Playgroud)
到Web.Config中的appSettings
问题出在WebMatrix.WebData中的ConfigUtil中
private static string GetLoginUrl()
{
return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl;
}
staticFormsAuthenticationSettings()
{
LoginUrlKey = "loginUrl";
DefaultLoginUrl = "~/Account/Login";
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ner 10
ScottGu在他的博客上回答了一个类似的问题,这显然是一个错误.
解决方法是添加此条目:
<add key="autoFormsAuthentication" value="false" />
Run Code Online (Sandbox Code Playgroud)
到<appSettingsWeb应用程序的根web.config文件中的/>部分.