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,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
SQL 开发框架 缓存
C# Abp框架入门系列文章(一)(上)
C# Abp框架入门系列文章(一)
241 0
|
9月前
|
前端开发 API 数据库
C# Abp框架入门系列文章(一)(下)
C# Abp框架入门系列文章(一)(下)
316 0
|
设计模式 缓存 关系型数据库
浅入ABP 系列(7):对象映射
浅入ABP 系列(7):对象映射
257 0
|
JavaScript 前端开发 测试技术
ABP框架 - 介绍
原文:ABP框架 - 介绍 文档目录   本节内容: 简介 一个快速示例 其它特性 启动模板 如何使用   简介 我们总是对不同的需求开发不同的应用。但至少在某些层面上,一次又一次地重复实现通用的和类似的功能。
3435 0
|
JavaScript 前端开发
|
测试技术 开发者