.net core mvc 简易登录

Posted smilepastali

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net core mvc 简易登录相关的知识,希望对你有一定的参考价值。

Startup.cs文件:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie(options =>
                
                    options.LoginPath = "/Home/Login";
                    options.ExpireTimeSpan = TimeSpan.FromDays(2);
                );
//注意app.UseAuthentication方法一定要放在下面的app.UseMvc方法前面,否者后面就算调用HttpContext.SignInAsync进行用户登录后,使用
            //HttpContext.User还是会显示用户没有登录,并且HttpContext.User.Claims读取不到登录用户的任何信息。
            //这说明Asp.Net OWIN框架中MiddleWare的调用顺序会对系统功能产生很大的影响,各个MiddleWare的调用顺序一定不能反
            app.UseAuthentication();

            app.UseMvc(routes =>
            
                routes.MapRoute(
                    name: "default",
                    template: "controller=Pages/action=Applet/id?");
            );

 

登录:

 [HttpPost]
        public async Task<IActionResult> Login(LoginModel dto)
        
            //登陆授权
            if (dto.UserName == "admin" && dto.Password == "siia")
            
                var claims = new List<Claim>()
                new Claim(ClaimTypes.Name,dto.UserName),
                new Claim(ClaimTypes.Role,"admin")
            ;
                var claimIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimIdentity));
                //验证是否授权成功
                //if (User.Identity.IsAuthenticated)
                //
                //    return RedirectToPage("Index");
                //
                return RedirectToAction("Applet", "Pages");
            
            else
            
                ViewBag.msg = "账号密码错误";
                return View();
            

        
        public async Task<IActionResult> Logout()
        
            //TODO:注销处理
            await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
            return RedirectToAction("Login");
        

 

以上是关于.net core mvc 简易登录的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core MVC,用户登录后限制查看

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由

ASP.NET Core 3.1 MVC JWT 登录返回 401

已有MVC项目(非Net Core)如何快速接入Cas单点登录

如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager

IIS 应用程序池登录凭据停止 .net Core