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

  • 相关阅读:
    学习windows编程 day4 之视口和窗口
    学习windows编程 day4 之 映射模式
    学习windows编程 day4 之 盯裆猫
    Android自动化测试(UiAutomator)简要介绍
    UltraEdit正则表达式介绍及实例
    addr2line -f -e *.so 0x9d69
    Android执行shell命令
    Drawable、Bitmap、byte[]之间的转换
    Ubuntu 12.04 64bit 配置完android 5.0编译环境后出现“could not write bytes: Broken pipe.”而无法进入输入帐号密码的登陆界面
    CameraTest
  • 原文地址:https://www.cnblogs.com/ljy0905/p/12567531.html
Copyright © 2011-2022 走看看