• 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中被使用 ,这将很容易为当前用户创建一个用户标识

  • 相关阅读:
    Redis单点登录
    MySQL有哪些存储引擎,各自的优缺点,应用场景
    MySQL慢查询优化、索引优化、以及表等优化总结
    Redis缓存和MySQL数据一致性方案详解
    Jenkies+github实现代码自动构建
    Python基础-day14-单元测试注册小例子
    Python基础-day13-unitest框架(Suite、runner)及生成报告,附带最新的HTMLTestRunnerNew.py文件
    Python基础-day11-继承和动态设置属性
    Python基础-day10-类的创建和调用
    Python基础-day03 字符串
  • 原文地址:https://www.cnblogs.com/lucky528/p/5495971.html
Copyright © 2020-2023  润新知