服务器端 Blazor 页面 post 到 Razor 页面 http 错误 400
Server-side Blazor page post to Razor page http error 400
我正在尝试 post 我的用户名和密码从 Blazor 页面 (.razor) 到 Razor 页面 (.cshtml),但我一直收到 HTTP 错误 400。
LoginControl.razor
<form method="post" action="login">
<input type="text"
name="username"
@bind="@Username"
placeholder="User Name" />
<input type="password"
name="password"
placeholder="Password"
@bind="@Password" />
<button class="ml-md-auto btn btn-primary">Loggin</button>
</form>
Login.cshtml.cs
public async Task<IActionResult> OnPostAsync([FromServices] IUserProvider provider, string username, string password)
{
Login stuff
}
Bad request (400) 表示服务器无法理解你
该方法="post" 不适用于 Blazor 或任何其他 SPA 框架。在 Blazor 中有特殊代码可以防止 post 返回。当然,您可以强制返回 post,这意味着您的 Blazor 页面已过期,如果您尝试 return 它,它会重新呈现,并且您之前的所有状态都会丢失。
您在这里要做的是在 Blazor 组件中获取用户的凭据,然后尝试将数据 post 发送到 Razor 页面模型进行验证。你不能那样做,也不应该那样做。您应该将您的用户重定向到一个登录页面,他在其中输入他的凭据,并且这些凭据应该针对某种存储进行验证,比如 SqlServer 数据库,然后 returns 到 Blazor 应用程序。请记住,重定向到 Razor 页面意味着你的 Blazor 应用程序已过期。再一次,您没有 post 登录 Razor 页面的用户凭据。用户应在 Login.cshtml
上输入他的凭据
我建议您使用Blazor 内置系统来启用身份验证和授权。该系统使用身份 Ui (Razor Pages) 对用户进行身份验证。它正是你想要做的。 See here...。另外,使用Blazor提供的Forms Components,比如EditForm、InutText等
我正在尝试 post 我的用户名和密码从 Blazor 页面 (.razor) 到 Razor 页面 (.cshtml),但我一直收到 HTTP 错误 400。
LoginControl.razor
<form method="post" action="login">
<input type="text"
name="username"
@bind="@Username"
placeholder="User Name" />
<input type="password"
name="password"
placeholder="Password"
@bind="@Password" />
<button class="ml-md-auto btn btn-primary">Loggin</button>
</form>
Login.cshtml.cs
public async Task<IActionResult> OnPostAsync([FromServices] IUserProvider provider, string username, string password)
{
Login stuff
}
Bad request (400) 表示服务器无法理解你
该方法="post" 不适用于 Blazor 或任何其他 SPA 框架。在 Blazor 中有特殊代码可以防止 post 返回。当然,您可以强制返回 post,这意味着您的 Blazor 页面已过期,如果您尝试 return 它,它会重新呈现,并且您之前的所有状态都会丢失。
您在这里要做的是在 Blazor 组件中获取用户的凭据,然后尝试将数据 post 发送到 Razor 页面模型进行验证。你不能那样做,也不应该那样做。您应该将您的用户重定向到一个登录页面,他在其中输入他的凭据,并且这些凭据应该针对某种存储进行验证,比如 SqlServer 数据库,然后 returns 到 Blazor 应用程序。请记住,重定向到 Razor 页面意味着你的 Blazor 应用程序已过期。再一次,您没有 post 登录 Razor 页面的用户凭据。用户应在 Login.cshtml
上输入他的凭据我建议您使用Blazor 内置系统来启用身份验证和授权。该系统使用身份 Ui (Razor Pages) 对用户进行身份验证。它正是你想要做的。 See here...。另外,使用Blazor提供的Forms Components,比如EditForm、InutText等