码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET Boilerplate-AbpSession

时间:2016-05-15 21:39:31      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:

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

ASP.NET Boilerplate-AbpSession

标签:

原文地址:http://www.cnblogs.com/lucky528/p/5495971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!