当前位置: 移动技术网 > IT编程>开发语言>.net > ABP之session

ABP之session

2019年04月04日  | 移动技术网IT编程  | 我要评论

重建家园,为难新郎,离骚易烊千玺

abp提供了一个iabpsession接口,可以在不使用aspnet的session的情况下获取当前用户和租户。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。这通常不是在域层中完成的。applicationservice、abpcontroller、abpapicontroller和其他一些基类已经注入了abpsession,因此,可以直接在应用程序服务方法中使用abpsession属性。

session属性

abpsession定义了几个关键属性:

userid:当前用户的id,如果没有当前用户,则为null。如果调用代码被授权,则不能为空。

tenantid:当前租户的id,如果没有当前租户,则为null(如果用户没有登录或他是主机用户)。

impersonatoruserid:如果当前会话由另一个用户模拟,则模拟器用户的id。如果这不是模拟登录,则为空。

impersonatortenantid:如果当前会话由另一个用户模拟,则模拟用户的租户的id。如果这不是模拟登录,则为空。

multitenancyside:它可以是主机或租户。

 

userid和tenantid是可空的。还有不可空的getuserid()和gettenantid()方法。如果确定有当前用户,可以调用getuserid()。如果当前用户为空,此方法将引发异常。gettenantid()也以这种方式工作。

模拟器属性不像其他属性那么常见,通常用于审计日志记录目的。

claimsabpsession

claimsabpsession是iabpsession接口的默认实现。它从当前用户主体的声明中获取会话属性(计算的multitenancyside除外)。对于基于cookie的表单身份验证,它从cookie获取值。因此,它完全集成到asp.net的身份验证机制中。

重写当前会话值

在某些特定情况下,可能需要为有限的范围更改/覆盖会话值。在这种情况下,可以使用iabpsession。使用方法如下:

public class myservice
{
    private readonly iabpsession _session;

    public myservice(iabpsession session)
    {
        _session = session;
    }

    public void test()
    {
        using (_session.use(42, null))
        {
            var tenantid = _session.tenantid; //42
            var userid = _session.userid; //null
        }
    }
}

use方法返回idisposable,必须对其进行处理。一旦处理了返回值,会话值将自动恢复到以前的值。
警告!

始终在using块中使用use方法,如上所示。否则,可能会得到意想不到的session值。

用户标识符

可以使用. touseridentifier()扩展方法从iabpsession创建useridentifier对象。由于在许多api中都使用了useridentifier,这将简化为当前用户创建useridentifier对象。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网