MVC LoginPage 上的部分视图链接不起作用(用户尚未登录/授权)

Posted

技术标签:

【中文标题】MVC LoginPage 上的部分视图链接不起作用(用户尚未登录/授权)【英文标题】:Partial View Link on MVC LoginPage not working (User not logged-in/Authorized yet) 【发布时间】:2021-07-16 00:28:06 【问题描述】:

我正在使用 ASP.NET MVC 开发网站并使用 LoginPage。在 LoginPage 上,我们还有“忘记密码”链接,单击该链接会打开一个模态弹出窗口(引导程序),其中的内容作为 PartialView 返回。

我面临的问题是,当我单击页面上的“忘记密码”链接时,会调用 Login 控制器的 Index 方法而不是 ForgotPassword 相关方法,这会导致 LoginPage 在模式弹出窗口中返回.

[AllowAnonymous]
[System.Web.Services.WebMethod()]
public ActionResult ForgotPassword()

   return PartialView("_ForgotPassword");

这似乎是某种身份验证问题,因为如果我使用旧登录页面(这是一个 .aspx 页面)登录,然后尝试手动转到新的 ASP.NET MVC 页面,登录时所有链接都带有 partialView页面运行良好。

其他人有这个问题吗?任何指针将不胜感激。

谢谢

编辑1:用于调用模态弹出窗口的javascript

function AttachPopup()     
    $('.modal-popup').click(function (event) 

        event.preventDefault();
        event.stopImmediatePropagation();

        var url = $(this).attr('data-content-url');
        var modalId = $(this).attr('data-target-model');
        var target = $(this).attr('data-target-content'); 

        $.ajax(
            url: url,
            type: 'POST',
            datatype: "json",
            cache: false,
            traditional: true,
            success: function (data)   
                $(target).empty();
                $(target).append(data);             
                $(modalId).modal('show');
            
        );
    );

url 正确,但仍调用 index。

【问题讨论】:

你能发布你的打开模式的javascript吗? 【参考方案1】:

AllowAnonymous 属性时,AuthorizeAttribute 的 onAuthorization 方法简单地忽略授权和认证检查。即使您有一个全局授权过滤器。它应该仍然有效。一位用户遇到了类似的问题。请查看此link

【讨论】:

【参考方案2】:

如前所述,我正在将一个 aspx 网站转换为 MVC。在 Web.config 中,我们有

<authorization>
  <deny users="?" />
</authorization>

这优先于 MVC [AllowAnonymous] 属性。注释掉上面的代码,解决了我的问题。

注意事项:当您这样做时,请使用 [Authorize] 属性检查您的网站是否安全

【讨论】:

以上是关于MVC LoginPage 上的部分视图链接不起作用(用户尚未登录/授权)的主要内容,如果未能解决你的问题,请参考以下文章

MVC - 使用 Viewbag 变量来确定部分视图不起作用

特定网址上的Asp mvc视图[重复]

Bootstrap 3 选项卡上的 MVC 部分视图渲染更改

MVC 5 + $Post() 功能在服务器上托管后不起作用

使用 MVC 在同一页面上的多个部分视图和模型绑定实例

Kendo Validator 未针对 MVC 部分视图触发