<<ABP框架>> 會話

来源:http://www.cnblogs.com/kid1412/archive/2016/10/22/5986611.html
-Advertisement-
Play Games

文檔目錄 本節內容: 簡介 關於 IAbpSeesion 註入會話 會話屬性 用戶標識符 關於 IAbpSeesion 簡介 如果一個應用需要登錄,它就需要知道當前用戶在執行的操作。儘管Asp.net自身在展現層提供了Session(會話)對象,而ABP提供IAbpSession介面來獲取當前用戶和 ...


文檔目錄

 

本節內容:

 

簡介

如果一個應用需要登錄,它就需要知道當前用戶在執行的操作。儘管Asp.net自身在展現層提供了Session(會話)對象,而ABP提供IAbpSession介面來獲取當前用戶和租戶,而不用Asp.net的Session。

關於 IAbpSession

必須實現IAbpSession介面,以便獲取真實的會話信息。儘管你可以用自己的方式實現它,但在module-zero項目里已經完全地實現了。

IAbp同樣也是完成集成的,它可用在ABPr其它結構里(設置系統和授權系統)。

 

註入會話

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屬性。

 

會話屬性

AbpSession定義了幾個關鍵屬性:

  • UserId:當前用戶的Id或空(如果沒有當前用戶),如果調用需要授權的代碼,它就不能為空。
  • TenantId:當前租戶的Id或空(如果沒有當前租戶:尚未登錄或是個宿主用戶)。
  • ImpersonatorUserId:模擬用戶的Id(如果其它用戶模擬當前會話),如果不是模擬登錄就為空。
  • ImpersonatorTenantId:模擬用戶的租戶的Id(如果其它用戶模擬當前會話),如果不是模擬登錄就為空。
  • MultiTenancySide:可能是宿主或租戶。

UserId和TenantId都可為空,有不可為空的方法GetUserId和GetTenantId,如果你能確保有當前用戶,你可以調用GetUserId()。如果當前用戶為空,這個方法拋出異常,GetTenantId()雷同。

Impersonator(模擬)屬性與其它屬性不能共同使用,一般只為了審核日誌的目的才用它。

 

用戶標識符

你可用.ToUserIdentifier()擴展方法,從IAbpSession創建一個UserIdentifier對象。由於UserIdentifier用在眾多的API里,所以這將簡化為當前用戶創建一個UserIdentifier。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 字元串截斷函數是指:Stuff 和 SubString,字元串查找函數是:CharIndex 和 PatIndex 一,SubString 截取子串 最常用的字元串函數,用於截取特定長度的子串。 參數說明: start 參數:整數,表示開始位置;字元的序號(index)從1開始,即第一個字元的序號是 ...
  • 今天遇到了一個問題,要查詢今天添加到一個表中的數據,後來解決了,嗯,記錄一下: SELECT * FROM 表1 WHERE convert(varchar(10),表1.創建時間,120)=CONVERT(VARCHAR(10),GETDATE(),120) 如果是本月的話: SELECT * F ...
  • Centos6.5之ssh免密碼登錄配置 centos ssh 免密碼登錄 0.說明 這裡為了方便說明問題,假設有A和B兩台安裝了centos6.5的主機。目標是實現A、B兩台主機分別能夠通過ssh免密碼登錄到對方主機。不同主機的配置過程一樣,這裡介紹A主機的配置過程。 事先在AB主機分別創建好要免 ...
  • 一、說明 安裝環境 centos6.6 (64位) python2.7.10 (升級系統預設python版本的方法參見 "在CentOS 6.5上安裝python2.7" ) 約定 工作目錄假定為當前用戶的HOME目錄 安裝的各軟體版本以文檔編寫時的最新版為基準,請結合實際情況參考。 尖括弧""包括 ...
  • 簡介 ABP提供了一個緩存介面,它內部使用了這個緩存介面。雖然介面的預設實現是MemoryCache,但可以用任何其它實現的緩存供應器。Abp.RedisCache包用Redis實現了緩存(查看下方的“Redis 緩存集成”)。 ICacheManager 緩存的主要介面是ICacheManager ...
  • MySqlSugar 3.X API 作為支持.NET CORE 為數不多的ORM之一,除了具有優越的性能外,還擁有強大的功能,不只是滿足你的增,刪,查和改。實質上擁有更多你想像不到的功能,當你需要實現某個功能時會發現有這個功能太棒了。 所有版本 ASP.NET 4.0+ MSSQL https:/ ...
  • 作為物聯網通訊框架,肯定要支持多種通訊鏈路,在多種通訊鏈路的基礎上完成多種通訊協議的交互,例如:Modbus、自定義協議等等。但是,有一個問題:針對同一臺硬體設備或感測器,完成串口和網路兩種通訊方式的數據採集和控制,是否要分別寫代碼?如果從現實角度分析,同一硬體,它要完成的業務邏輯肯定是相同的,所以... ...
  • 代碼是敲出來的嗎?是批量生成出來的嗎? No no no,代碼是設計出來的! 如果說到代碼生成器,大家可能會想到三層、動軟代碼生成器、資料庫表等等。其一般的思路是,先有資料庫然後根據庫里的表自動生成一系列的代碼,包括實體類、持久化、業務層(空函數)、頁面代碼等,還可以生成資料庫文檔。這個確實很好很強 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...