ASP.NET Core MVC身份验证登录问题
创始人
2024-09-15 08:30:36
0

在ASP.NET Core MVC中进行身份验证登录可以通过使用ASP.NET Core Identity来实现。下面是一种解决方法,包含代码示例:

首先,确保你的项目已经正确配置了ASP.NET Core Identity。可以通过在Startup.cs文件的ConfigureServices方法中添加以下代码来配置:

services.AddIdentity()
    .AddEntityFrameworkStores()
    .AddDefaultTokenProviders();

接下来,在Startup.cs文件的Configure方法中添加以下代码来启用身份验证:

app.UseAuthentication();

接下来,创建一个AccountController.cs文件,并添加以下代码:

public class AccountController : Controller
{
    private readonly UserManager _userManager;
    private readonly SignInManager _signInManager;

    public AccountController(UserManager userManager, SignInManager signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }

    [HttpGet]
    public IActionResult Login()
    {
        return View();
    }

    [HttpPost]
    public async Task Login(LoginViewModel model, string returnUrl = null)
    {
        returnUrl = returnUrl ?? Url.Content("~/");

        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                return LocalRedirect(returnUrl);
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);
            }
        }

        return View(model);
    }

    [HttpPost]
    public async Task Logout()
    {
        await _signInManager.SignOutAsync();
        return RedirectToAction("Index", "Home");
    }
}

在上面的代码中,我们创建了一个AccountController类,并注入了UserManager和SignInManager来处理用户相关的操作。Login方法用于显示登录表单的视图,Login方法的HttpPost版本用于处理实际的登录逻辑。Logout方法用于注销用户。

创建一个LoginViewModel.cs文件,并添加以下代码:

public class LoginViewModel
{
    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

上面的代码定义了用于登录的视图模型。

接下来,创建一个Login.cshtml文件,并添加以下代码:

@model LoginViewModel

Login

上述代码创建了一个用于登录的表单视图。

最后,在你的视图中使用以下代码来显示登录链接:

@Html.ActionLink("Login", "Login", "Account")

这样,你就完成了ASP.NET Core MVC身份验证登录的基本配置和实现。用户可以通过访问/login来打开登录表单进行登录,并通过访问/logout注销登录。

相关内容

热门资讯

最新技巧“兴动游戏辅助”从前有... 最新技巧“兴动游戏辅助”从前有开挂辅助下载(有挂教学) 了解更多开挂安装加(136704302)微信...
每日必看“wepoker到底有... 每日必看“wepoker到底有没有透视”往昔有开挂辅助挂(有挂透明挂)1、下载安装好wepoker到...
盘点一款“微乐兰州麻将小程序辅... 盘点一款“微乐兰州麻将小程序辅助”从来有开挂辅助神器(的确有挂);打开点击测试直接进入微信(1367...
盘点十款“财神破解版全自动脚本... 财神破解版全自动脚本开挂教程视频分享装挂详细步骤在当今的网络游戏中,财神破解版全自动脚本作为一种经典...
透视ai“广西友乐辅助器”从来... 透视ai“广西友乐辅助器”从来有辅助开挂平台(有挂教学);打开点击测试直接进入微信(13670430...
透视脚本“潮娱乐鱼虾蟹公式辅助... 透视脚本“潮娱乐鱼虾蟹公式辅助软件”从来有辅助工具(有挂技术);无需打开直接搜索微信(1367043...
透视肯定“山西扣点点胜率辅助器... 透视肯定“山西扣点点胜率辅助器”本然有辅助开挂脚本(有人有挂)您好:山西扣点点胜率辅助器这款游戏可以...
透视私人局“海贝之城透视辅助器... 透视私人局“海贝之城透视辅助器”先前有开挂辅助工具(有挂攻略);打开点击测试直接进入微信(13670...
查到实测辅助“wepoker挂... wepoker挂开挂教程视频分享装挂详细步骤在当今的网络游戏中,wepoker挂作为一种经典的娱乐方...
重大来袭“杭州都莱app有辅助... 重大来袭“杭州都莱app有辅助吗”从前有开挂辅助软件(竟然有挂) 了解更多开挂安装加(1367043...