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

  • 相关阅读:
    Javadoc注释的用法
    Java 和 Android系统环境变量设置
    [转载]Android开发新浪微博客户端 完整攻略 [新手必读]
    eclipse中Android程序字符编码不统一的解决方案
    用word2007写blog时表格的显示效果
    解决Vista中的文件关联图标问题。
    用word2007在博客园发布带图片的blog
    在c++中使用gotoxy
    动态多线程任务管理
    几个视频切割工具
  • 原文地址:https://www.cnblogs.com/ljy0905/p/12567531.html
Copyright © 2011-2022 走看看