Asp.net core MVC 6.0 用户登录 Cookie 认证

在Program.cs 文件的 builder.Services.AddControllersWithViews() 下一行添加如下代码:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(option =>
    {
        option.LoginPath = "/Home/Login";
        option.ExpireTimeSpan = TimeSpan.FromDays(2);
    });

var app = builder.Build() 下面添加如下代码:

app.UseAuthentication();

登录认证控制器代码如下:

        [HttpPost]
        public async Task<IActionResult> Login(LoginModel dto)
        {
            if(dto.UserName=="admin" && dto.Password=="123")
            {
                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));
                return RedirectToAction("Index");
            }
            else
            {
                ViewBag.msg = "Login Failed";
                return View();
            }
        }

登出控制器代码如下:

        public async Task<IActionResult> Logout()
        {
            await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
            return RedirectToAction("Index");
        }

需要认证的控制器或者动作上添加:

[Authorize]

不需要认证的动作上添加:

[AllowAnonymous]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

精通电脑科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值