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来赋值和取值了

  • 相关阅读:
    SIFT算法详解(转)
    相似图片搜索的原理(二)(转)
    相似图片搜索的原理(转)
    几种常见模式识别算法整理和总结(转)
    Android客户端与服务端交互之登陆示例
    Android中SQLite使用
    音视频转码后合成的一些例子
    Android MediaCodec 使用例子
    (转)H264(NAL简介与I帧判断)
    Android Camera 使用一例,视频聊天app
  • 原文地址:https://www.cnblogs.com/ljy0905/p/12567531.html
Copyright © 2011-2022 走看看