服务器端 Blazor 页面发布到 Razor 页面 http 错误 400

2023-11-26

我试图将我的用户名和密码从 Blazor 页面 (.razor) 发布到 Razor 页面(.cshtml),但我总是收到 http 错误 400。

登录控件.razor

<form method="post" action="login">
        <input type="text"
               name="username"
               @bind="@Username"
               placeholder="User Name" />
        &nbsp;&nbsp;
        <input type="password"
               name="password"
               placeholder="Password"
               @bind="@Password" />&nbsp;&nbsp;&nbsp;
        <button class="ml-md-auto btn btn-primary">Loggin</button>
    </form>

登录.cshtml.cs

public async Task<IActionResult> OnPostAsync([FromServices] IUserProvider provider, string username, string password)
    {
Login stuff
}

错误请求(400)意味着服务器无法理解您

method="post" 不适用于 Blazor 或任何其他 SPA 框架。 Blazor 中有一些特殊代码可以防止回发。当然,您可以强制回发,这意味着您的 Blazor 页面将过期,如果您尝试返回该页面,它将重新呈现,并且您之前的所有状态都会丢失。

您在这里尝试做的是在 Blazor 组件中获取用户的凭据,然后尝试将数据发布到 Razor 页面模型进行验证。你不能那样做,也不应该那样做。您应该将用户重定向到登录页面,在其中输入他的凭据,并且这些凭据应该针对某种存储(例如 SqlServer 数据库)进行验证,然后返回到 Blazor 应用程序。请记住,重定向到 Razor 页面意味着您的 Blazor 应用程序已过期。您不再将用户的凭据发布到登录 Razor 页面。用户应该在 Login.cshtml 上输入他的凭据

我建议您使用 Blazor 内置系统来启用身份验证和授权。该系统使用 Identity Ui (Razor Pages) 来对用户进行身份验证。它正是您想要做的。看这里...。另外,使用 Blazor 提供的 Forms 组件,例如 EditForm、InutText 等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器端 Blazor 页面发布到 Razor 页面 http 错误 400 的相关文章

随机推荐