分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

.net core使用官方CookieAuthentication身份验证

发布时间:2023-09-06 01:53责任编辑:林大明关键词:Cookie

注入:

 ???public IServiceProvider ConfigureServices(IServiceCollection services) ???????{ ???????????//services.AddJwtAuthorization(Configuration); ???????????var types = new[] { typeof(ApplicationModule) }; ???????????services.AddScoped<IIdentityManager, IdentityManager>(); ???????????services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) ???????????????????????????????.AddCookie(options => ???????????????????????????????{ ???????????????????????????????????options.LoginPath = new PathString("/login/index"); ???????????????????????????????????options.AccessDeniedPath = new PathString("/Error/index"); ???????????????????????????????}); ???????????services.AddMvc(); ???????????var iservice = services.AddFramework<LiveFactoryDbContext>(opt => ?????????????{ ?????????????????opt.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); ?????????????}, types, types); ?????????????????????return iservice; ???????}

新建对应类

using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Identity;using Microsoft.Extensions.Logging;using Microsoft.Extensions.Options;using System;using System.Collections.Generic;using System.Security.Claims;using System.Text;using System.Threading;using System.Threading.Tasks;using Microsoft.AspNetCore.Authentication;using Microsoft.AspNetCore.Authentication.Cookies;using System.Linq;namespace LiveFactory.Core{ ???public interface IIdentityManager ???{ ???????ClaimsIdentity CreateIdentity(IdentityUser user); ???????Task SignInAsync(IdentityUser user); ???????Task SignOutAsync(); ???} ???public class IdentityManager : IIdentityManager ???{ ???????IHttpContextAccessor _contextAccessor; ???????public IdentityManager(IHttpContextAccessor contextAccessor) ???????{ ???????????_contextAccessor = contextAccessor; ???????} ???????public virtual ClaimsIdentity CreateIdentity(IdentityUser user) ???????{ ???????????var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme); ???????????identity.AddClaim(new Claim(ClaimTypes.PrimarySid, user.Id)); ???????????identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName)); ???????????return identity; ???????} ???????public virtual async Task SignInAsync(IdentityUser user) ???????{ ???????????await _contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(CreateIdentity(user))); ???????} ???????public virtual async Task SignOutAsync() ???????{ ???????????await _contextAccessor.HttpContext.SignOutAsync(); ???????} ???}}

登录注销

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using LiveFactory.Application;using LiveFactory.Application.Base;using LiveFactory.Core;using Microsoft.AspNetCore.Mvc;//using JFJT.Authorize.IJwtTokenManager;namespace LiveFactory.Web.Controllers{ ???public class LoginController : Controller ???{ ???????public readonly IUserService _IUserService; ???????public readonly IIdentityManager _identityManager; ???????public LoginController(IUserService userService, IIdentityManager identityManager) ???????{ ???????????_IUserService = userService; ???????????_identityManager = identityManager; ???????} ???????public IActionResult Index() ???????{ ???????????return View(); ???????} ???????public async Task<ResultDto<UserDto>> Login(UserDto loginModel) ???????{ ???????????var result = _IUserService.Login(loginModel); ???????????if (result.Success) ???????????{ ???????????????await _identityManager.SignInAsync(new Microsoft.AspNetCore.Identity.IdentityUser() { Id = Guid.NewGuid().ToString(), PasswordHash = result.Data.Password.ToString(), UserName = result.Data.Account.ToString() }); ???????????} ???????????return result; ???????} ???????????????public ActionResult LoginOut() ???????{ ???????????//_authenticationManager.SignOut(); ???????????_identityManager.SignOutAsync(); ???????????return RedirectToAction("Index"); ???????} ???}}

需要验证的控制器中加入

 [Authorize]

例:

.net core使用官方CookieAuthentication身份验证

原文地址:https://www.cnblogs.com/Cein/p/9009284.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved