ABP理论学习之Abp Session

简介:

本篇目录

介绍

当应用程序要求用户登录时,那么应用程序也需要知道当前用户正在执行的操作。虽然ASP.NET本身在展现层提供了Session对象,但ABP也提供了在任何需要获得当前用户和租户的地方都可以使用的IAbpSession接口。

关于IAbpSession

为了获得实际的session信息,必须要实现IAbpSession接口。虽然你可以用自己的方式实现它,但在module-zero项目中已经完全实现。

IAbpSession已经完全集成到ABP(实例的设置系统和授权系统)中。

注入Session

IAbpSession一般属性注入到需要的类中,除非没有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(一般我们不再领域层使用)。ApplicationService,AbpController,AbpApiController已经注入了 AbpSession。因此,你可以直接在应用层服务方法中为实例使用AbpSession属性。

使用Session属性

AbpSession定义了一些key属性:

  • UserId:当前用户的Id。值为null,表示当前的用户不存在。如果调用的代码授权给某个用户的话,那么值不为null。
  • TenantId:当前租户的Id。如果当前的租户不存在,值就为null。
  • MultiTenancySide:可能是Host(租主)或者Tenant(租户)。

UserId和TenantId是nullable(可空的),也存在不可空的GetUserId()和 GetTenantId()方法。如果你确定当前的用户存在,那么你可以调用GetUserId()。如果当前的用户为null,那么该方法就会抛异常。GetTanantId()也是类似的。





本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/ABPSession.html,如需转载请自行联系原作者

目录
相关文章
|
人工智能 并行计算 TensorFlow
同一个问题,Gemini、ChatGPT、Copilot、通义千问和文心一言会怎么答?
同一个问题,Gemini、ChatGPT、Copilot、通义千问和文心一言会怎么答?
|
C# 虚拟化 索引
【WPF】UI虚拟化之------自定义VirtualizingWrapPanel
原文:【WPF】UI虚拟化之------自定义VirtualizingWrapPanel 前言 前几天QA报了一个关于OOM的bug,在排查的过程中发现,ListBox控件中被塞入了过多的Item,而ListBox又定义了两种样式的ItemsPanelTemplate。
2464 0
|
8月前
|
自然语言处理 监控 安全
SmolLM2:多阶段训练策略优化和高质量数据集,小型语言模型同样可以实现卓越的性能表现
SmolLM2 通过创新的多阶段训练策略、高质量数据集的构建与优化,以及精细的模型后训练调优,在 1.7B 参数规模下实现了卓越的性能表现,并在多个基准测试中超越了同等规模甚至更大规模的语言模型。
271 73
SmolLM2:多阶段训练策略优化和高质量数据集,小型语言模型同样可以实现卓越的性能表现
|
6月前
|
JSON API 开发者
京东API最新指南:商品视频接口接入与应用
在电商领域,商品视频能有效提升销售业绩。京东商品视频接口助力开发者获取商品视频信息(播放链接、时长、格式、封面图等),通过 HTTP GET/POST 请求返回 JSON 数据,便于集成到各类应用中,优化展示效果与用户体验。本指南详解接口接入与使用方法。
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
300 5
|
索引 Python
【Pandas】Pandas Dataframe 常用用法
Pandas DataFrame的常用操作示例,包括筛选数据、索引操作、合并DataFrame、设置和排序索引、文本处理、列重命名、处理缺失值、排序以及删除满足特定条件的行等技巧。
306 0
|
12月前
|
API 数据安全/隐私保护 开发者
淘宝 API:关键词搜商品列表接口,助力商家按价格销量排序分析数据
此接口用于通过关键词搜索淘宝商品列表。首先需在淘宝开放平台注册并创建应用获取API权限,之后利用应用密钥和访问令牌调用接口。请求参数包括关键词、页码、每页数量、排序方式及价格区间等。返回结果含总商品数量及具体商品详情。使用时需注意签名验证及官方文档更新。
|
C# 开发者 Windows
不可不知的WPF转换(Transform)
【9月更文挑战第14天】在 Windows Presentation Foundation(WPF)中,转换(Transform)是一种强大的工具,允许开发者以多种方式操纵图形和界面元素的外观与位置。主要类型包括平移、旋转、缩放和倾斜转换。通过组合这些转换,可以实现更复杂的效果,并且可以与 WPF 的动画系统结合,创建动态界面效果。掌握 WPF 转换是成为优秀开发者的必备技能之一。
258 6
|
机器学习/深度学习 算法 Go
【博士每天一篇文献-算法】Progressive Neural Networks
本文介绍了渐进式网络(Progressive Neural Networks),一种深度强化学习架构,通过在训练过程中学习预训练模型间的侧向连接实现跨任务知识迁移,有效利用迁移学习优势同时避免灾难性遗忘,并通过强化学习任务验证了架构性能。
412 1