原创 【ASP.NET Core】動態映射MVC路由

ASP.NET Core 中的幾大功能模塊(Razor Pages、MVC、SignalR/Blazor、Mini-API 等等)都以終結點(End Point)的方式公開。在HTTP管道上調用時,其擴展方法基本是以 Map 開頭,如 Ma

原创 【ASP.NET Core】用配置文件來設置授權角色

在開始之前,老周先祝各個次元的夥伴們新春快樂、生活愉快、萬事如意。 在上一篇水文中,老周介紹了角色授權的一些內容。本篇咱們來聊一個比較實際的問題——把用於授權的角色名稱放到外部配置,不要硬編碼,以方便後期修改。 由於要配置的東西比較簡單,咱

原创 【ASP.NET Core】按用戶角色授權

上次老周和大夥伴們分享了有關按用戶Level授權的技巧,本文咱們聊聊以用戶角色來授權的事。 按用戶角色授權其實更好弄,畢竟這個功能是內部集成的,多數場景下我們不需要擴展,不用自己寫處理代碼。從功能語義上說,授權分爲按角色授權和按策略授權,而

原创 【ASP.NET Core】按用戶等級授權

驗證和授權是兩個獨立但又存在聯繫的過程。驗證是檢查訪問者的合法性,授權是校驗訪問者有沒有權限查看資源。它們之間的聯繫——先驗證再授權。 貫穿這兩過程的是叫 Claim 的東東,可以叫它“聲明”。沒什麼神祕的,就是由兩個字符串組成的對象,一曰

原创 【ASP.NET Core】MVC操作方法如何綁定Stream類型的參數

咱們都知道,MVC在輸入/輸出中都需要模型綁定。因爲HTTP請求發送的都是文本,爲了使其能變成各種.NET 類型,於是在填充參數值之前需 ModelBinder 的參與,以將文本轉換爲 .NET 類型。 儘管 ASP.NET Core 已內

原创 【ASP.NET Core】MVC控制器的各種自定義:IActionHttpMethodProvider 接口

IActionHttpMethodProvider 接口的結構很簡單,實現該接口只要實現一個屬性即可——HttpMethods。該屬性是一個字符串序列。 這啥意思呢?這個字符串序列代表的就是受支持的 HTTP 請求方式。比如,如果此屬性返回

原创 【ASP.NET Core】MVC控制器的各種自定義:特性化的路由規則

MVC的路由規則配置方式比較多,咱們用得最多的是兩種: A、全局規則。就是我們熟悉的”{controller}/{action}“。 app.MapControllerRoute( name: "bug",

原创 【ASP.NET Core】MVC控制器的各種自定義:修改參數的名稱

在上一篇中,老周演示了通過實現約定接口的方式自定義控制器的名稱。 至於說自定義操作方法的名稱,就很簡單了,因爲有內置的特性類可以用。看看下面的例子。 [Route("[controller]/[action]")] pub

原创 【ASP.NET Core】MVC控制器的各種自定義:應用程序約定的接口與模型

從本篇起,老週會連發N篇水文,總結一下在 MVC 項目中控制器的各種自定義配置。 本文內容相對輕鬆,重點討論一下 MVC 項目中的各種約定接口。畢竟你要對控制器做各種自定義時,多數情況會涉及到約定接口。約定接口的結構都差不多,均包含一個 A

原创 用 VS Code 搞 Qt6:讓信號和槽自動建立連接

Qt 具備讓某個對象的信號與符合要求的槽函數自動建立連接。弄起來也很簡單,只要調用這個靜態方法即可: QMetaObject::connectSlotsByName(...); connectSlotsByName 方法需要一個參數,此

原创 用 VS Code 搞 Qt6:信號、槽,以及QObject

Qt 裏面的信號(Signal)和槽(Slot)雖然看着像事件,但它實際上是用來在兩個對象之間進行通信的。既然是通信,就會有發送者和接收者。 1、信號是發送者,觸發時通過特有的關鍵字“emit”來發出信號。 2、槽是信號的接收者,它實則是一

原创 用 VS Code 搞Qt6:使用 PySide 6

一般來說,用C++寫 Qt 應用纔是正宗的,不過,爲了讓小學生也能體驗 Qt 的開發過程,或者官方爲了增加開發者人數,推出了可用 Python 來編程的 Qt 版本。此版本命名比較奇葩,叫 PySide,與 Qt 6 配套的是 PySide

原创 用VS Code搞Qt 6:Gui基礎類型——QGuiApplication和QWindow

在99.996%的情況下,我們弄 Qt 應用都會使用 QApplication 類和 QWidget 類,即直接用 Widgets 庫中的組件/控件。爲了方便開發人員自己造輪子,Qt 也提供了一套基礎的 GUI 組件。這些組件位於 Gui

原创 【ASP.NET Core】自定義Session的存儲方式

在開始今天的表演之前,老周先跟大夥伴們說一句:“中秋節快樂”。 今天咱們來聊一下如何自己動手,實現會話(Session)的存儲方式。默認是存放在分佈式內存中。由於HTTP消息是無狀態的,所以,爲了讓服務器能記住用戶的一些信息,就用到了會話。

原创 【ASP.NET Core】在Blazor中獲取 HTTP 上下文信息

今天咱們來扯一下 Blazor 應用程序怎麼訪問 HttpContext。其實這句話有坑,爲了避免大夥伴們掉茅坑,老周直接說明:Blazor 是不能訪問 HttpContext 的。哪怕你在服務容器中註冊了 IHttpContextAcce