Razor Pages OnPost未被解雇

时间:2019-08-02 16:37:02

标签: c# jquery .net-core asp.net-ajax razor-pages

我在我的同事开发的.NET Core 2.2 Razor Pages中有一个应用程序。

现在,我需要完成一些验证才能访问记录。

在特定网站上有一些验证方法,例如:

public virtual void OnGet()
{
    if (!IsPossibleToShowRecord())
    {
        RedirectToAccessDenied(AccessDeniedTypes.NonAuthorizeToViewRecord);
    }
}

这是具有记录详细信息的页面的基类。 IsPossibleToShowRecord方法是抽象的,并实现了有关访问记录的用户权限的一些逻辑。

不幸的是,有时用户A显示详细信息页面,例如,客户ID = 5,另一个用户(B)使客户ID = 5无效。此无效后,用户A尝试更改客户,并且由于客户无效,用户无权做此操作(用户对用户不可见)。

在用户A在列表中,用户B使客户无效,然后用户A单击以链接到客户的详细信息(或直接在浏览器中键入地址)的情况下,此解决方案可以正常工作。用户将获得信息对话框或被重定向到信息页面。

所以我需要将此“ OnGet”情况复制到“ OnPost”。 有两种方法可以在应用程序中进行发布请求。 首先是直接通过发送表格。其次是通过不带表单的JQuery($ .post)。

我的想法是,我使用类似OnGet的东西,例如:

public virtual void OnPost()
{
    if (!IsPossibleToShowRecord())
    {
        RedirectToAccessDenied(AccessDeniedTypes.NonAuthorizeToViewRecord);
    }
}

    public void OnPostAsync()
    {
        if (!IsPossibleToShowRecord())
        {
            RedirectToAccessDenied(AccessDeniedTypes.NonAuthorizeToViewRecord);
        }
    }

发布请求的网址(表单操作和jquery)为 / Customer / 5&handler =无效 并且方法public async Task<IActionResult> OnPostInvalidate()被触发。但是方法OnPost或OnPostAsync不是。

为什么不被解雇,如何解决呢?

0 个答案:

没有答案