在.NET MVC中,登录将重定向到主页,而不考虑凭据

oxf4rvwz  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(121)

我刚刚开始使用.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>

mbyulnm0

mbyulnm01#

不管输入了什么凭据,您都能看到主页的原因是您没有用[Authorize]属性标记HomeController。
如果添加[Authorize]属性,除非登录,否则将看不到主页。当您尝试导航到主页时,添加到HomeController的[Authorize]属性会将您重定向到登录页面。
下面是一种在HomeController类中执行此操作的方法:

[Authorize]
    public class HomeController : Controller

字符串
您可能需要配置应用程序以正确重定向到登录页面。当前的RedirectToLogin方法不执行任何操作,因为在导航到主页时没有调用该方法。

相关问题