• ASP.NET BoilerplateAbpSession


    /
    ------2016-05-15
    /
    ------介绍
      如果一个应用支持登录,也许需要知道当前登录用户的一些操作,然而ASP.NET 本身对于展现层提供了Session的支持,ABP提供了 IAbpSession 接口可以在任何地方获取(obtain)当前用户和租户
    ------关于IAbpSession
    这个接口必须被实现以获得现行的Session信息,然而你也可以用你自己的方式去实现它,它在 module-zero 项目中被完整的实现了
    IAbpSession 在ABP中也被其他的结构完全整合和使用(对于这个实例配置系统 和授权系统)
    ------注入Session
      一般情况下 IAbpSession 在需要使用到它的类中通过 属性注入进来 ,如果我们使用属性注入的方式,可以使用NullAbpSession.Instance 当做它的默认值 例子如下
    public class MyClass:ITransientDependency
    {

      public IAbpSession AbpSession{get;set;}
      public MyClass()
    {

      AbpSession=NullAbpSession.Instance;
    }
    public void MyMethod()
    {
      var currentUserId=AbpSession.UserId;
      //....
    }
    }
      当应用层需要授权操作时,建议在应用层和应用服务之上使用IAbpSession(通常我们不要使用它在领域层),Application,AbpController 和AbpApiController 已经注入AbpSession ,因此你在应用服务中可以直接使用AbpSession的属性
    Session 属性
    AbpSession 定义了一些关键属性
    ▪UserId 当前用户的Id,如果没有则为null ,如果执行代码之前被授权,它不会为null
    ▪TenatnId 当前租户的id 没有则为null
    ▪ImpersonatorUserId
    ▪ImpersonatorTenantId
    ▪MultiTenancySide
    Userid 和 TenantId 可空,也有非空的方法 GetUserId()和GetTenantId() 方法,如果你确定存在当前用户,你可以调用GetUserId(),如果当前用户为null,这个方法将抛出异常,GetTenantId()也同样如此。
    Impersonator 属性并不常见,一般用于审计日志中。
    User Identifier
    你可以在 IAbpSession中 使用 .ToUserIdentifier() 扩展方法去创建一个 UserIdentifier 对象,自从UserIdentifier 在众多的API中被使用 ,这将很容易为当前用户创建一个用户标识

  • 相关阅读:
    如何诊断RAC数据库上的“IPC Send timeout”问题?
    ORA-1157处理过程
    ORA-1157 Troubleshooting
    SQL优化案例(执行计划固定)
    数据库io层面故障
    sql优化案例(索引创建不合理)
    SQL优化案例(union问题)
    Redis在Windows下的安装与使用
    npm使用淘宝镜像
    基于compose单机部署 etcd + coredns
  • 原文地址:https://www.cnblogs.com/lucky528/p/5495971.html
Copyright © 2020-2023  润新知