在asp.net MVC 3中授权登录URL

时间:2011-10-01 01:32:27

标签: asp.net-mvc asp.net-mvc-3

我正在开发Asp.Net MVC 3应用程序。我已经为网站创建了管理区域,并在登录后将[Authorized]属性应用于actionmethods。当我尝试直接访问这些URL而无需像admin / home或admin / productlist那样登录时,我被重定向到/ Home / Login并出现身份验证错误。我想重定向到管理员/登录。

请建议。 感谢

3 个答案:

答案 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