C# 允许匿名查看razor页面,但授权发布

C# 允许匿名查看razor页面,但授权发布,c#,asp.net-mvc,asp.net-core,razor,razor-pages,C#,Asp.net Mvc,Asp.net Core,Razor,Razor Pages,我想允许任何人查看页面,但只有授权用户才能提交表单,即使用razor页面的post方法 然而,authorize属性仅适用于PageModel级别,我可以使get+post可授权,或者两者都可匿名访问 在这种情况下,推荐的方法是什么?首先,我只会在用户经过身份验证的情况下呈现表单: @if (User.Identity.IsAuthenticated) { <partial name="_CommentForm" /> } 或者您可以发布到另一个页面,该页面仅用于处理提交内

我想允许任何人查看页面,但只有授权用户才能提交表单,即使用razor页面的post方法

然而,authorize属性仅适用于
PageModel
级别,我可以使get+post可授权,或者两者都可匿名访问


在这种情况下,推荐的方法是什么?

首先,我只会在用户经过身份验证的情况下呈现表单:

@if (User.Identity.IsAuthenticated)
{
    <partial name="_CommentForm" />
}

或者您可以发布到另一个页面,该页面仅用于处理提交内容,并且可以应用
Authorize
属性

不要忘记使用防伪令牌(对不起,我还没有使用ASP.NET Core,所以我不知道这在这里是如何工作的).@howcheng请求验证是Razor页面中POST请求的默认设置:。
public async Task<IActionResult> OnPostAsync()
{
    if(User.Identity.IsAuthenticated)
    {
        if(Modelstate.IsValid)
        {
            // blah blah
        }
    }
    else
    {
        return BadRequest();
    }
}