zoukankan      html  css  js  c++  java
  • 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来赋值和取值了

  • 相关阅读:
    python 基础知识(一)
    挖坑和打井的思考
    静坐冥想
    恭喜你被裁员了!
    什么叫做内心强大?怎样变成一个内心强大的人?
    年轻人,你的时间到哪啦?
    树莓派3B+ 人脸识别、摄像头安装和使用
    树莓派3b+ 实现视频监控
    如何设置树莓派 VNC 的分辨率
    为什么大多数托管辅导班做不大?
  • 原文地址:https://www.cnblogs.com/ljy0905/p/12567531.html
Copyright © 2011-2022 走看看