我刚刚开始使用.NET MVC。我试图使一个简单的登录形式,输入用户名和密码。我把一个简单的条件给用户授权。如果用户名是admin,密码是123456,它应该直接到主页。但无论输入的凭证是正确还是不正确,页面仍然指向主页。
我试图清除该高速缓存(idk我认为这可能是原因)。
这是我的AccountController.cs
using Microsoft.AspNetCore.Mvc;
namespace htmlHelperStudy.Controllers
{
public class AccountController : Controller
{
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
public IActionResult Login(string username, string password)
{
// Kullanıcı adı ve şifre kontrolü yapılacak
if (IsValidUser(username, password))
{
// Giriş başarılı, ana sayfaya yönlendir
return RedirectToAction("Index", "Home");
}
else
{
// Giriş başarısız, hata mesajı ile login sayfasını tekrar göster
ModelState.AddModelError("", "Invalid username or password.");
return View();
}
}
// Kullanıcı adı ve şifre kontrolünü gerçekleştiren metot
private bool IsValidUser(string username, string password)
{
// Gerçek bir doğrulama işlemi yapılmalı
// Bu örnekte basit bir şifre kontrolü örneği:
return username == "admin" && password == "123456";
}
}
}
字符串
这是我的HomeController.cs
using htmlHelperStudy.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
namespace htmlHelperStudy.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult RedirectToLogin()
{
return RedirectToAction("Login", "Account");
}
}
}
型
这是我的Login.cshtml
@{
ViewData["Title"] = "Simple View";
}
<h2>@ViewData["Title"]</h2>
<form asp-controller="Home" asp-action="Index" method="post">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password" />
</div>
<button type="submit">Login</button>
</form>
型
1条答案
按热度按时间mbyulnm01#
不管输入了什么凭据,您都能看到主页的原因是您没有用[Authorize]属性标记HomeController。
如果添加[Authorize]属性,除非登录,否则将看不到主页。当您尝试导航到主页时,添加到HomeController的[Authorize]属性会将您重定向到登录页面。
下面是一种在HomeController类中执行此操作的方法:
字符串
您可能需要配置应用程序以正确重定向到登录页面。当前的
RedirectToLogin
方法不执行任何操作,因为在导航到主页时没有调用该方法。