ABP Session扩展
先跑到Application层Sessions文件夹下面新建一个IAbpSessionExtensions 的接口 继承于IAbpSession
然后写上自己所需要的属性 例子: string UserName { get; }
代码如下:
namespace MPACore.CRM.Sessions { public interface IAbpSessionExtensions: IAbpSession { string UserName { get; } string EmailAddress { get; } string Name { get; } string FullName { get; } string Surname { get; } } }
然后在写一个实现上面接口的类 AbpSessionExtensions 并且同时需要继承 ClaimsAbpSession 这个类
如图:
public class AbpSessionExtensions : ClaimsAbpSession, IAbpSessionExtensions { public AbpSessionExtensions(IPrincipalAccessor principalAccessor, IMultiTenancyConfig multiTenancyConfig, ITenantResolver tenantResolver, IAmbientScopeProvider<SessionOverride> sessionOverrideScopeProvider ) :base(principalAccessor,multiTenancyConfig,tenantResolver,sessionOverrideScopeProvider) { } public string UserName => GetKeyValue(EnglishConsts.ClaimTypes.UserName); public string EmailAddress => GetKeyValue(ClaimTypes.Email); public string Name => GetKeyValue(ClaimTypes.Name); public string FullName => GetKeyValue(EnglishConsts.ClaimTypes. FullName); public string Surname => GetKeyValue(ClaimTypes.Surname); private string GetKeyValue(string key) { var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal; if (claimsPrincipal == null) return null; var claim = claimsPrincipal.Claims.FirstOrDefault(c => c.Type == key); if (string.IsNullOrEmpty(claim?.Value)) { return null; } return claim.Value; } }
public class EnglishConsts { public const string LocalizationSourceName = "English"; public class ClaimTypes { public const string UserName = "UserName"; public const string FullName = "FullName"; } }
然后分别找到
ControllerBase,AppServiceBase 这两个类
写上 public new IAbpSessionExtensions AbpSession { get; set; }
覆盖原来的AbpSession
浙公网安备 33010602011771号