Я пытаюсь реализовать базовую (и довольно грубую) идентификацию, но мне кажется, что я никак не могу добраться до действия post в моем контроллере.
У меня есть контроллер аккаунта, который выглядит так:
[Authorize]
public class AccountController : Controller
{
private ApplicationDbContext _context;
public AccountController(ApplicationDbContext context)
{
_context = context;
}
[HttpGet]
[AllowAnonymous]
public IActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(Identity model)
{
var t = _context.LoginTable.FirstOrDefault(m => m.UserName == model.UserName);
if (t == null)
return View("Signup");
return View("Index");
}
}
И мой вид бритвы будет таким:
@model MyProject.Models.Identity
@{
ViewData["Title"] = "Login";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Login</h2>
<form method="post">
<div class="form-group">
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password)
@Html.TextBoxFor(m => m.Password, new { @class = "form-control", @type = "password" })
</div>
<button type="submit" name="login" value="Login">Login</button>
</form>
А в моем startup.cs - промежуточное ПО выглядит так:
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseStaticFiles(); // serve static files (bootstrap, jQuery, css, etc.) first
app.UseMvc(ConfigureRoutes);
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Когда я нажимаю кнопку отправки - в режиме отладки я вижу, что нажимаю метод GET, но не POST.
Что я пропустил?
РЕДАКТИРОВАТЬ: Еще одна вещь, которая может быть использована, это то, что каждый раз, когда я пытаюсь отправить форму входа, URL добавляется с другой учетной записью% ... login% ...
т.е.
1-й раз:
http://localhost:64191/Account/Login?ReturnUrl=%2F
2-й раз:
http://localhost:64191/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252F
и т.д.