1、在*.Core 下找到Extensions文件夹添加AbpSessionExtension.cs类和IAbpSessionExtension.cs类
2、IAbpSessionExtension继承IAbpSession
using Abp.Runtime.Session;
using System;
using System.Collections.Generic;
using System.Text;
namespace MyProject.Extensions
{
public interface IAbpSessionExtension : IAbpSession
{
public string GetUsercId { get; }
public string GetPermitNo { get; }
public string GetUserdeptId { get; }
public string GetWxOpenId { get; }
}
}
3、AbpSessionExtension继承ClaimsAbpSession和IAbpSessionExtension
using Abp.Configuration.Startup;
using Abp.MultiTenancy;
using Abp.Runtime;
using Abp.Runtime.Session;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
namespace MyProject.Extensions
{
/// <summary>
/// 对AbpSession的扩展
/// </summary>
public class AbpSessionExtension : ClaimsAbpSession, IAbpSessionExtension
{
public AbpSessionExtension(IPrincipalAccessor principalAccessor,
IMultiTenancyConfig multiTenancy,
ITenantResolver tenantResolver,
IAmbientScopeProvider<SessionOverride> sessionOverrideScopeProvider) :
base(principalAccessor, multiTenancy, tenantResolver, sessionOverrideScopeProvider)
{
}
private string GetClaimValue(string claimType)
{
var claimsPrincipal = this.PrincipalAccessor.Principal;
var claim = claimsPrincipal?.Claims.FirstOrDefault(c => c.Type == claimType);
if (string.IsNullOrEmpty(claim?.Value))
return null;
return claim.Value;
}
public string GetUsercId => GetClaimValue("UsercId");
public string GetPermitNo => GetClaimValue("PermitNo");
public string GetUserdeptId => GetClaimValue("UserdeptId");
public string GetWxOpenId => GetClaimValue("WxOpenId");
}
}
4、添加Session
loginResult.Identity.AddClaim(new Claim(“UserdeptId”, loginResult.User.deptId.ToString()));
loginResult.Identity.AddClaim(new Claim(“UsercId”, loginResult.User.cId.ToString()));
public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
{
var loginResult = await GetLoginResultAsync(
model.UserNameOrEmailAddress,
model.Password,
GetTenancyNameOrNull()
);
//AbpSession.UsercId = loginResult.User.cId;
//AbpSession.UserdeptId = loginResult.User.deptId;
loginResult.Identity.AddClaim(new Claim("UserdeptId", loginResult.User.deptId.ToString()));
loginResult.Identity.AddClaim(new Claim("UsercId", loginResult.User.cId.ToString()));
if (AbpSession.WxOpenId != "")
{
var user = await _userManager.GetUserByIdAsync(loginResult.User.Id);
user.wxopenid = AbpSession.WxOpenId;
await _userManager.UpdateAsync(user);
}
var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity));
return new AuthenticateResultModel
{
AccessToken = accessToken,
EncryptedAccessToken = GetEncryptedAccessToken(accessToken),
ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds,
UserId = loginResult.User.Id
};
}
5、调用扩展的Session
AbpSession.UserdeptId
版权声明:本文为douyapeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。