ASP.NET Zero--後端應用程式

來源:互聯網
上載者:User

標籤:auth   需求   網站   default   添加   mod   方案   資訊   語言   

後端應用程式

這是使用者名稱和密碼輸入的實際應用程式。您將主要在此應用程式上添加您的業務需求。

應用檔案夾

後端應用程式預設內建在私人區域,名為“ App ”,但可以在建立解決方案時確定。因此,所有控制器,視圖和模型都位於 Areas / App檔案夾下。此外,相關指令碼和樣式檔案位於wwwroot / view-resources / Areas / App檔案夾下,如下所示:

主菜單

應用程式的主菜單在AppNavigationProvider 類中定義。請參閱ABP的 導航文檔,以深入瞭解建立菜單。當您添加新的功能表項目時,它會自動在布局中呈現。

布局

應用程式的布局位於Areas / App / Views / Layout 檔案夾下。它使用組件的頁首,頁尾和 側邊欄:

主菜單在側邊欄組件中呈現 。布局還高度使用捆綁和壓縮(見下文)系統的指令碼和樣式包括。

版本管理

如果您沒有開發多租戶應用程式,則可以跳過本節。

大多數SaaS(多租戶)應用程式都有具有不同功能的版本(包) 。因此,他們可以為其租戶(客戶)提供不同的價格和功能選項。 版本頁面(可在host登入中使用)用於管理應用程式的版本:

版本用於分組功能值並分配給租戶。當我們點擊版本的操作/編輯時,我們可以看到它已指派的功能:

啟動項目僅包含每個版本/租戶可以啟用/禁用聊天功能(並且它是2個子功能)。所有功能都在 AppFeatureProvider類中定義。特徵值儲存在 AbpFeatures表中。功能不限於布爾(啟用/禁用)值,並且可以包含不同類型的值,如下所示: 

 有關更多資訊,請參閱 功能管理和 版本管理文檔。

租戶管理

如果您沒有開發多租戶應用程式,則可以跳過本節。

如果這是一個多租戶應用程式,並以host使用者身份登入,則顯示租戶頁面:

租戶由租戶類代表。可以通過添加新的屬性類來拓展租戶類 。只有一個租戶,預設為 Default。租戶名稱(代號名稱)是租戶的唯一名稱。租戶可以是啟用的或鎖定的。如果是鎖定狀態的,那麼這個租戶的使用者不能登入到應用程式。

當我們點擊“ 建立新租戶 ”按鈕時,會顯示一個對話方塊:

租用名稱應該是唯一的,不能包含空格或其他特殊字元,因為它可以用作子網域名稱(如tenancyname.mydomain.com。請參閱下面的部分)。名字可以是任何東西。管理員電子郵件 用作新客戶的管理使用者的電子郵件地址。使用者將自動建立管理使用者。我們可以為管理員設定隨機密碼並發送啟用郵件。當使用者首次登入時,他/她應該更改密碼。我們可以取消選中此項以輸入已知密碼。

當我們建立一個新的租戶時,我們應該選擇/建立一個資料庫來儲存新租戶的資料。我們可以選擇“ 使用主機資料庫 ”將租戶資料存放區在主機資料庫中(可以用於單個資料庫方法),或者我們可以指定一個連接字串來為新租戶建立/使用專用資料庫 。AspNet Zero支援混合方式。這意味著您可以為某些租戶使用host資料庫,並為其他租戶建立專用資料庫。即使您可以將一些租戶分組在一個單獨的資料庫中。

所有租戶操作都由TenantAppService 類處理。樣本(刪除租戶):

[AbpAuthorize(AppPermissions.Pages_Tenants_Delete)] public  async Task DeleteTenant(EntityRequestInput input){    var tenant = wait TenantManager.GetByIdAsync(input.Id);    CheckErrors(wait TenantManager.DeleteAsync(tenant));}

TenantAppService主要使用TenantManager網域名稱服務 (DNS)進行租戶操作。

租戶版和功能

一個版本可以分配給租戶(建立或編輯)。租戶將繼承分配版本的所有功能。但是我們也可以覆蓋租戶的功能和價值。單擊 租戶的操作/更改功能以自訂 其功能:

租戶使用者模仿

作為host使用者,我們可能希望代表租戶執行操作。在這種情況下,我們可以在操作中單擊“ 登入狀態此租戶 ”按鈕。當我們點擊它,我們看到一個模式來選擇租戶的使用者。我們可以選擇任何使用者並執行允許該使用者的操作。有關詳細資料,請參閱 本文檔中的“ 使用者類比”部分。

將租約名稱用作子網域名稱

多租戶應用程式通常使用子域來識別當前租戶。 tenant1 .mydomain.com,tenant2 .mydomain.com等。ASP.NET Zero自動識別並從子域擷取租戶名稱(請參閱主機設定部分)。

組織單位

組織單位(OU)用於對使用者和實體進行分層分組。那麼你可以根據他們的OU來擷取使用者或實體。當我們點擊管理/組織單位時,我們進入相關頁面:

在這裡,我們可以管理OU(建立,編輯,取消,移動)和成員(添加/刪除)。

OrganizationUnitManager用於管理OU, UserManager用於管理代碼中的OU成員。 OrganizationUnitAppService執行應用程式邏輯。

在左OU樹中,我們可以按右鍵一個OU(或左鍵點擊到 右側的箭頭)開啟OU操作的操作功能表。當我們嘗試 添加一個成員時,顯示一個模態來選擇使用者:

這實際上是一個通用的尋找模式,可用於選擇任何類型的實體(請參閱地區/應用/視圖/公用/模態/ _LookupModal.cshtml及其相關的指令檔)。要選擇使用者,我們建立FindUsers 的方法CommonLookupAppService然後配置模式使用此方法的工作(見景資源/區/應用/瀏覽/ OrganizationUnits / index.js為lookupModal.open的使用檔案)。

有關詳細資料,請參閱 組織單位管理檔案。

角色管理

當我們點擊管理/角色菜單,我們進入角色管理頁面:

角色用於分組許可權。當使用者有角色時,他/她將具有該角色的所有許可權。

角色由Role類表示。角色類可以通過添加新的屬性來擴充。

RoleManager執行域邏輯,RoleAppService 執行角色的應用程式邏輯。

角色可以是動態或靜態:

  • 靜態角色:靜態角色具有已知名稱 (如“admin”),不能更改此名稱(我們可以更改 顯示名稱)。它在系統啟動時存在,無法刪除。因此,我們可以根據靜態角色名稱編寫代碼。
  • 動態角色:部署後可以建立動態角色。然後我們可以授予該角色的許可權,我們可以將角色指派給某些使用者,我們可以將其刪除。我們不能在開發時間內知道動態角色的名稱。

一個或多個角色可以設定為預設。預設角色預設分配給新添加/註冊的使用者。這不是開發時屬性,可以在部署後設定或更改。

在啟動項目中,我們對host(對於多租戶應用程式)具有靜態管理員角色。此外,我們還為租戶提供靜態管理員和使用者角色。管理角色預設授予所有許可權。使用者角色是新使用者的預設角色,預設情況下沒有許可權。這些可以輕鬆改變。有關所有靜態角色,請參閱StaticRoleNames類和更改靜態角色的AppRoleConfig。

角色許可權

由於角色用於分組許可權,因此我們可以在建立或編輯角色時設定許可權,如下所示:

(並非所有許可權如所示)

每個租戶都有自己的角色,租戶角色的任何改變都不會影響其他租戶。而且,host也有自己的角色。

使用者管理

當我們單擊管理/使用者菜單時,我們進入使用者管理頁面:

使用者是可以登入應用程式並根據其許可權執行某些操作的人員。

使用者類代表使用者,可以通過添加新屬性來拓展使用者類 。

UserManager 用於執行域邏輯,UserAppService用於為使用者執行應用程式邏輯。

使用者可以有零個或多個角色。如果使用者具有多個角色,則他將繼承所有這些角色的許可權。此外,我們可以設定使用者特定的許可權。使用者特定使用權限設定將覆蓋此許可權的角色設定。使用者權限對話方塊的:

(並非所有許可權如所示)

對話方塊用於建立/編輯使用者:

我們可以更改使用者密碼,使其 啟用/鎖定 等等...使用者擁有個人資料圖片。使用者可以更改(請參閱使用者菜單部分)。管理員 使用者不能作為商務規則刪除。如果你不想使用管理員,你可以鎖定它。

使用者類比

作為管理員(或任何允許的使用者),我們可能希望以使用者身份登入,並代表該使用者執行操作,而不知道他的密碼。當我們在使用者的操作中點擊“ 以此使用者身份登入 ”表徵圖時,我們將自動重新導向並以此使用者身份登入。這被稱為“ 使用者類比 ”。當我們類比使用者時,“ 回到我的帳戶 ”選項被添加到使用者設定檔菜單中:

在一個類比帳戶中,我們只能執行該使用者允許的操作。這意味著,一切正好可以作為此相同使用者登入自己的能力。唯一的區別是在審計日誌中顯示,這表明操作是由其他人執行的。注意; 此外,使用者名稱附近還顯示一個紅色的“返回”表徵圖,表示您處於類比帳戶。

在Web項目的AccountController中進行類比。

語言管理

語言管理頁面用於管理(添加/編輯/刪除)應用程式語言並更改本地化文本:

我們可以建立新語言,編輯/刪除現有語言,並將語言設定為預設語言。注意; 租戶無法編輯/刪除預設語言,但host使用者可以做。

當我們點擊更改任何語言的文本時,我們被重新導向到一個新的視圖來編輯語言文本:

我們可以選擇任何語言作為基礎(參考)並更改 目標語言的文本。基礎語言只是為了協助翻譯進度。由於可能有不同的 本地化來源,我們選擇要翻譯的源。當我們點擊編輯表徵圖時,我們可以看到所選文本的編輯模式:

host使用者(如果允許的話)可以編輯語言和本地化的文本。對於多租戶應用程式的所有租戶,這些語言將是預設的。 租戶繼承語言和本地化的文本,可以 覆蓋本地化的文本或添加新的語言。

兩個頁面都使用LanguageAppService類作為應用程式服務。它具有管理語言和本地化文本的方法。 IApplicationLanguageManager和IApplicationLanguageTextManager 介面用於執行域邏輯(由LanguageAppService使用)。

有關更多資訊,請參閱 語言管理和 本地化文檔。

稽核線索

在稽核線索頁面中,我們可以看到與應用程式的所有使用者互動:

所有應用程式服務方法和MVC控制器操作都會自動記錄,可以在這裡查看。請參閱 稽核線索文檔以瞭解如何進行配置。當我們點擊放大鏡表徵圖時,我們可以看到所有的細節是一個稽核線索:

審計日誌報告由AuditLogAppService類提供。

主機設定

主機設定頁面用於配置一些系統設定:

時區是此頁面中的重要設定。AspNet Zero可以在多個地區工作。每個使用者可以在自己的時區中看到日期和時間。此頁面中的時區設定允許您為應用程式(包括所有租戶和使用者)設定預設時區。租戶和使用者可以在自己的設定中更改時區。時區設定僅在使用UTC時鐘時可用。 請參閱文檔以切換到UTC。

SAVE ALL按鈕可以一鍵儲存所有設定。HostSettingAppService用於檢索和儲存設定(有關詳細資料,請參閱設定提供者部分)。

主機設定頁面中的“ 安全 ”選項卡包含密碼複雜性和其他安全設定。主機可以在此選項卡中定義系統範圍的安全設定。每個租戶都可以在租戶設定頁面中覆蓋此設定。PasswordComplexityChecker 類負責檢查密碼是否滿足密碼複雜度設定。

租戶設定

在多租戶應用程式中,租戶設定如下所示:

如果我們禁用多租戶,那麼這個頁面也會顯示一些主機設定(因為沒有主機設定頁面)。租戶還可以定義使用者的密碼複雜度設定,也可以使用主機使用者定義的密碼複雜度設定。

TenantSettingAppService用於擷取/設定租戶設定。

啟用LDAP(ACTIVE DIRECTORY)身分識別驗證

LDAP(Active Directory)預設情況下禁用身分識別驗證。為了使其工作,我們應該禁用多租戶,因為LDAP auth不會在多租戶系統中正常使用。在.Core項目的CoreModule類中,我們應該啟用以下行:

Configuration.Modules.ZeroLdap().Enable(typeof(AppLdapAuthenticationSource));

然後,我們可以在設定頁面中看到LDAP設定部分:

我們可以檢查“ 啟用LDAP驗證 ”以啟用它。如果伺服器在域和應用程式中運行域使用者或本地系統,則通常甚至不需要設定網域名稱,使用者和密碼。您可以登出,然後使用您的域使用者名稱和密碼登入。如果沒有,您應該設定這些憑據。

.Net core相容性

LDAP認證尚未被.net core支援。因此,它被設計為有條件的。如果您使用的是.Net Framework(4.6+),那麼它將可用,否則將被禁用。

維護

維護頁面可用於多租戶應用程式的host端(單租戶應用程式在租戶側顯示),如下所示:

在“ 緩衝 ”選項卡中,我們可以清除一些或所有快取。如果您手動更改資料庫並希望重新整理應用程式緩衝,則可能需要清除緩衝。CachingAppService用於清除伺服器端的緩衝。

網站日誌選項卡用於查看和下載日誌:

WebLogAppService用於從伺服器擷取日誌。

租戶儀表板

ASP.NET Zero啟動項目還包括樣本 儀表板。這隻是為了示範目的,您可以將其作為實際儀錶盤的起點:

在這裡,只有會員活動圖資料從伺服器(從TenantDashboardAppService)中 檢索。您可以單擊重新整理按鈕產生隨機圖。

通知

通知表徵圖位於語言選擇按鈕旁邊。紅色圓圈中的數字顯示未讀通知計數。

使用者可以通過點擊此表徵圖看到3個最近的通知。

使用者可以通過單擊“將所有設為全部”連結將所有通知標示讀取,或者通過單擊每個通知旁邊的“設定為已讀”連結來標記單個通知。

通知使用SignalR即時發送。另外,收到 通知時會顯示案頭推播通知。

通知設定

“設定”連結開啟通知設定對話方塊。

在此對話方塊中有一個用於啟用/禁用接收通知的全域設定。如果啟用此設定,則使用者可以單獨啟用/禁用每個通知。

您還可以在AppNotificationProvider 類中定義自訂通知。例如,新使用者的註冊通知在所定義的AppNotificationProvider如下。

context.Manager.Add(      new NotificationDefinition(        AppNotificationNames.NewUserRegistered,        displayName:L(“NewUserRegisteredNotificationDefinition”),        permissionDependency:new SimplePermissionDependency(AppPermissions.Pages_Administration_Users)    ));

有關 詳細資訊,請參閱通知定義部分。

AppNotifier類用於發布通知。 NotificationAppService類用於管理通知的應用程式邏輯。有關詳細資訊,請參閱通知文檔。

通知單

使用者的所有通知都列在此頁面中。

.Net core相容性

由於SignalR還沒有為.net core準備就緒,如果您選擇.net core作為基礎架構,即時通知將不起作用。

聊天表徵圖位於頁面右上方的使用者設定檔映像旁邊。紅色圓圈中的數字顯示未讀的聊天訊息計數。

當使用者點擊此表徵圖時,聊天面板將出現在頁面右側。此面板包含使用者的朋友和被阻止的使用者列表。

使用者可以通過將使用者名稱寫入朋友列表中的使用者名稱文字框中來添加新朋友。如果為租戶啟用“與其他租戶聊天”功能,則可以通過寫[租戶名稱] \ [使用者名稱](例如:預設\ admin)將其他租戶的使用者添加為朋友。如果啟用了“與host使用者聊天”功能,host使用者可以通過在相同的文字框中寫入。\ [使用者名稱]添加為朋友。

雖然線上朋友/使用者的個人資料圖片上有一個綠色圓圈,但離線的朋友/使用者都有一個灰色的圈子。

使用者可以通過點擊聊天面板右上方的針表徵圖來定位或取消開啟聊天面板。應用程式嘗試記住聊天面板的最後狀態,並在使用者登入到應用程式時恢複。

當選擇了一個朋友/使用者時,會話面板被開啟。

使用者可以阻止或解除此地區中的朋友/使用者。所選使用者使用者名稱右側有一個扳手表徵圖。此表徵圖開啟一個操作菜單,該菜單包含塊使用者或根據使用者的塊狀態解除封鎖使用者操作。

聊天訊息通過使用ChatMessageManager域類的ChatHub signalR集線器類傳播。

ChatUserStateWatcher類負責觀看聊天使用者的線上/離線狀態更改。當使用者上線或離線時,該類抓取狀態更改並通知相關使用者的朋友。

FriendshipAppService和FriendshipManager類負責管理友誼請求。來自被阻止的使用者的聊天訊息不會傳遞給目標使用者。

由於聊天是一個即時操作,應用程式會緩衝線上使用者的朋友和每個朋友的未讀訊息數。UserFriendsCache 類管理這些快取作業。

UserFriendCacheSyncronizer類負責保持使用者的朋友緩衝最新。為了做到這一點,它會觀看Friendship和ChatMessage實體的一些事件。

.Net core相容性

由於SignalR尚未準備好.net core,如果您選擇.net核心作為基礎架構,聊天功能將無法正常工作。

聊天功能

系統中有三個聊天功能。這些是“聊天”,“與主機聊天”,“與其他租戶聊天”。每個版本/租戶可以啟用/禁用這些功能。通過使用這些功能,主機可以啟用/禁用與其他租戶的使用者或主機使用者的聊天。

使用者菜單

使用者可以點擊右上方的姓名開啟使用者菜單:

連結帳戶

連結的帳戶用於將多個帳戶相互連結。以這種方式,使用者可以使用此功能輕鬆瀏覽他/她的帳戶。

使用者可以通過點擊“管理帳戶”連結來連結新帳戶或刪除已連結的帳戶。

為了連結新帳戶,使用者必須輸入相關帳號的登入憑據。

UserLinkAppService類用於管理帳戶連結的應用程式邏輯, UserLinkManager類用於管理用於帳戶連結的域邏輯。

設定檔設定

我的設定用於更改使用者設定檔設定:

如下所示,管理員使用者名稱無法更改。它被認為是一個特殊的使用者名稱,因為它被用於資料庫遷移種子。其他使用者可以更改其使用者名稱。ProfileAppService用於擷取/更改設定。

登入嘗試

所有登入嘗試(失敗的成功)都記錄在應用程式中。使用者可以看到他/她的帳戶的上次登入嘗試。UserLoginAppService 用於從伺服器擷取登入嘗試。

更換圖片

使用者可以更改自己的個人資料圖片。ProfileController用於上傳和擷取使用者個人資料圖片。目前,支援jpg / jpeg,gif和png檔案,您可以擴充它。

更改密碼

ProfileAppService用於更改密碼。

登出

AccountController用於登出使用者並重新導向到登入頁面。

ASP.NET Zero--後端應用程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.