• ABP框架扩展AbpSession


    1、扩展IAbpSession

    定位到.Core结尾的项目中,添加Extensions文件夹,然后添加IAbpSessionExtension接口继承自IAbpSession

    namespace TJS.IntelligentMonitoring.Extensions
    {
        public interface IAbpSessionExtension:IAbpSession
        {
            string ProjectId { get; set; }
        }
    }

    2、实现IAbpSessionExtension

    添加AbpSessionExtension类,基础自ClaimsAbpSession并实现IAbpSessionExtension接口。

    namespace TJS.IntelligentMonitoring.Extensions
    {
        public class AbpSessionExtension : ClaimsAbpSession, IAbpSessionExtension
        {
            public AbpSessionExtension(IPrincipalAccessor principalAccessor,
                IMultiTenancyConfig multiTenancy,
                ITenantResolver tenantResolver,
                IAmbientScopeProvider<SessionOverride> sessionOverrideScopeProvider) :
                base(principalAccessor, multiTenancy, tenantResolver, sessionOverrideScopeProvider)
            {
            }
    
            //public string ProjectId => GetClaimValue("ProjectId");
            //private string GetClaimValue(string claimType)
            //{
            //    var claimsPrincipal = PrincipalAccessor.Principal;
    
            //    var claim = claimsPrincipal?.Claims.FirstOrDefault(c => c.Type == claimType);
            //    if (string.IsNullOrEmpty(claim?.Value))
            //        return null;
            //    return claim.Value;
            //}
    
            public string ProjectId { get; set; }
        }
    }

    3、替换掉注入的AbpSession属性

    先来替换掉AbpController中注入的AbpSession
    定位到.WebControllersxxxxControllerBase.cs,使用属性注入IAbpSessionExtension。添加以下代码:

     //隐藏父类的AbpSession
            public new IAbpSessionExtension AbpSession { get; set; }

    再来替换掉ApplicationService中注入的AbpSession
    定位到.ApplicationxxxxAppServiceBase.cs。使用属性注入IAbpSessionExtension,同样添加以下代码:

    //隐藏父类的AbpSession
            public new IAbpSessionExtension AbpSession { get; set; }

    这样就可以在controller和service中使用扩展的AbpSession.ProjectId来赋值和取值了

  • 相关阅读:
    Vue2.0一个login跳转实例
    canvas动画—圆形扩散、运动轨迹
    根据地理信息绘画的html5 小游戏
    用vue开发一个猫眼电影web app
    微信小程序 iphone6 和 iphone6plus 如何设置rpx单位,通俗易懂的方法
    前端实例练习
    为表单加上即时通讯的能力
    MongoDB学习笔记4——GridFS基础
    剑指Offer(Java版)第十三题:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
    剑指Offer(Java版)第十一题
  • 原文地址:https://www.cnblogs.com/ljy0905/p/12567531.html
Copyright © 2020-2023  润新知