我正在开发Asp.Net MVC 3应用程序。我已经为网站创建了管理区域,并在登录后将[Authorized]
属性应用于actionmethods。当我尝试直接访问这些URL而无需像admin / home或admin / productlist那样登录时,我被重定向到/ Home / Login并出现身份验证错误。我想重定向到管理员/登录。
请建议。 感谢
答案 0 :(得分:8)
如果这是Stock MVC 3授权,那么我自己以及许多其他人都遇到了为“LogOn”操作设置了错误的URL地址的问题...由于某种原因,授权试图将用户发送到帐户\登录并查看帐户视图会发现实际上没有“登录”视图,它被称为“LogOn”,因此您必须使用以下内容在Web.config文件中修复此问题:
<add key="loginUrl" value="~/Account/LogOn" />
答案 1 :(得分:7)
ASP.NET应用程序(包括MVC3)的登录URL在web.config中的窗体身份验证部分中进行控制:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Home/Login" timeout="2880" />
</authentication>
</system.web>
</configuration>
您的诀窍是您需要两个不同的登录URL。 ASP.NET有一个很棒的功能,你可以在项目的每个目录中都有一个web.config文件,并且根据需要,它将使用它可以找到的最具体的设置,直到根web.config。因此,在您拥有管理员视图的文件夹中(我猜是“管理员”),您应该能够创建第二个web.config,它将仅适用于那些页面并在树中较低的位置:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Admin/Login" timeout="2880" />
</authentication>
</system.web>
</configuration>
答案 2 :(得分:0)
您可以覆盖授权操作过滤器来处理这些问题。例如,您不仅可以检查角色,还可以检查某些特定权限,并重定向到不同的Url。并且使用此方法也可以考虑您的路由配置。
看一下这个答案:asp.net mvc Adding to the AUTHORIZE attribute