如何将未经授权的用户重定向到登录页面

时间:2019-08-02 03:42:36

标签: asp.net-mvc

我正在使用MVC5和AD授权。如果没有授权,我想重定向到登录页面。因此,我在web.config中添加了一些设置,如下所示。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

但是之后。当我开始调试时。主页的URL如下所示。

这是怎么了?看来returnUrl是问题所在。有什么建议可以解决吗?

http://localhost:62435/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%2525252FLogin%2525253FReturnUrl%2525253D%252525252FAccount%252525252FLogin%252525253FReturnUrl%252525253D%25252525252FAccount%25252525252FLogin%...................

2019/08/05

我通过设置以下步骤解决了我的问题。

  1. 更改web.config的设置。

来自

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

收件人

<authentication mode="None" />
  1. 添加如下代码。
public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            // I've add code here
            filters.Add(new AuthorizeAttribute());
        }
    }

顺便说一句,我正在使用UseCookieAuthentication。 我不了解FormsAuthentication。以及CookieAuthentication和FormsAuthentication之间的区别。

1 个答案:

答案 0 :(得分:1)

似乎您在“帐户”控制器上的“登录”操作受到保护,也许具有Authorize属性。未经身份验证的用户需要能够访问登录名,因此请使用AllowAnonymous属性。

[AllowAnonymous]
public ActionResult Login()
    ...

您还说过您正在使用MVC,但您的web.config表单身份验证是指login.aspx。基于此-我认为只需要~/Account/Login