分享web开发知识

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

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

IdentityServer4结合AspNetCore.Identity实现登录认证需要注意实现IUserClaimsPrincipalFactory

发布时间:2023-09-06 02:08责任编辑:胡小海关键词:暂无标签

Idr4结合AspNetCore.Identity实现Claims认证需要一个问题:

去实现IUserClaimsPrincipalFactory接口,为什么要实现这个接口呢?

本生是能够登录的,但是过一段时间就会出现设置value值为null的错误如图

其实是Claims身份认证信息过期需要重新创建,所以我们要实现IUserClaimsPrincipalFactory接口来实现里面的CreateAsync

public class UserClaimsPrincipal : IUserClaimsPrincipalFactory<IdentityUser> ???{ ???????private readonly IUserStoreService _storeService; ???????public UserClaimsPrincipal(IUserStoreService storeService) ???????{ ???????????_storeService = storeService; ???????} ???????public async Task<ClaimsPrincipal> CreateAsync(IdentityUser user) ???????{ ???????????var claims = await _storeService.GetAllClaimsByUser(user); ???????????ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims); ???????????ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(claimsIdentity); ???????????return await Task.FromResult(claimsPrincipal); ???????} ???}

处理如上,处理后一旦身份信息过期就会调用本方法重新创建身份信息

同时我们需要在服务中添加相关服务

services.AddIdentity<IdentityUser, IdentityRole>(options => ???????????{ ???????????????options.User.RequireUniqueEmail = false; ???????????????options.Password.RequiredLength = 6; ???????????????options.Password.RequireLowercase = false; ???????????????options.Password.RequireNonAlphanumeric = false; ???????????????options.Password.RequireUppercase = false; ???????????????options.Password.RequireDigit = false; ???????????}) ???????????????.AddEntityFrameworkStores<ApplicationDbContext>() ???????????????.AddDefaultTokenProviders() ???????????????.AddClaimsPrincipalFactory<UserClaimsPrincipal>();

IdentityServer4结合AspNetCore.Identity实现登录认证需要注意实现IUserClaimsPrincipalFactory

原文地址:https://www.cnblogs.com/liyouming/p/9435941.html

知识推荐

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