You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
LINGYUN.Abp.Identity.Session.AspNetCore
身份服务用户会话扩展模块
接口描述
AbpSessionMiddleware 在请求管道中从用户令牌提取 sessionId 作为全局会话标识, 可用于注销会话
注意: 当匿名用户访问时, 以请求 CorrelationId 作为标识; 当 CorrelationId 不存在时, 使用随机 Guid.NewGuid().
HttpContextDeviceInfoProvider 从请求参数中提取设备标识
出于模块职责分离原则, 请勿与 LINGYUN.Abp.Identity.AspNetCore.Session 模块混淆
HttpContextDeviceInfoProvider 用于处理会话IP的地址位置解析
IsParseIpLocation 启用后将对会话IP进行地理位置解析 IgnoreProvinces 解析地理位置时需要忽略的省份,通常情况下中国的直辖市需要 LocationParser 自定义需要处理的地理位置数据
功能特性
- 提供AspNetCore环境下的会话管理功能
- 支持从请求中提取设备标识信息
- 支持IP地理位置解析功能
- 依赖AbpAspNetCoreModule、AbpIP2RegionModule和AbpIdentitySessionModule模块
配置项
AbpIdentitySessionAspNetCoreOptions
{
"Identity": {
"Session": {
"AspNetCore": {
"IsParseIpLocation": false, // 是否解析IP地理信息,默认:false
"IgnoreProvinces": [ // 不做处理的省份,默认包含中国直辖市
"北京",
"上海",
"天津",
"重庆"
]
}
}
}
}
基本用法
- 配置IP地理位置解析
Configure<AbpIdentitySessionAspNetCoreOptions>(options =>
{
options.IsParseIpLocation = true; // 启用IP地理位置解析
options.IgnoreProvinces.Add("香港"); // 添加需要忽略的省份
options.LocationParser = (locationInfo) =>
{
// 自定义地理位置解析逻辑
return $"{locationInfo.Country}{locationInfo.Province}{locationInfo.City}";
};
});
- 使用设备信息提供者
public class YourService
{
private readonly IDeviceInfoProvider _deviceInfoProvider;
public YourService(IDeviceInfoProvider deviceInfoProvider)
{
_deviceInfoProvider = deviceInfoProvider;
}
public async Task<DeviceInfo> GetDeviceInfoAsync()
{
return await _deviceInfoProvider.GetDeviceInfoAsync();
}
}
配置使用
[DependsOn(typeof(AbpIdentitySessionAspNetCoreModule))]
public class YouProjectModule : AbpModule
{
// other
}