易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权
認證與授權組件 @malagu/security 。Malagu 框架結合傳統后臺管理系統和云計算平臺的認證與授權理念,并借鑒了 Spring Security 設計思想,抽象了一套通用的認證與授權模型。Spring Security 對前后端分離架構支持不是特別友好,Malagu 框架在這方面也做了不少改進。
框架提供的認證與授權默認實現比較簡單,認證是基于用戶名與密碼方式;授權是授權裝飾器 + EL 表達式。但是,框架提供了很多擴展點,基于這些擴展點,我們可以實現各種各樣復雜的認證與授權實現,例如 @malagu/oauth2-client 組件是基于 @malagu/security 組件擴展實現,提供了基于 ODIC 的認證和 OAuth2.0 的授權能力。
使用方法
框架提供了一個開箱即用的組件 @malagu/security ,該組件提供了一套默認的行為規則,例如
- 默認的登錄頁面路由
- 默認的登錄提交路由
- 默認的密碼 Hash 算法
- 默認的登錄成功頁面路由
- 默認的登出成功頁面路由
- 默認的用戶服務接口實現,從內存中加載用戶信息。等等
大部分默認行為,我們無需自定義。有少量是需要我們根據業務情況自己實現的,比如登錄頁面、登錄成功頁面、登出成功頁面,以及用戶服務接口的實現(從數據庫中加載用戶信息)。安裝 @malagu/security 組件如下:
yarn add @malagu/security # 或者 npm i @malagu/security實現登錄頁面
在登錄頁面中,默認需要通過 POST 方法(可以自定義),并且攜帶用戶名(username)和密碼(password)信息發送請求到 /login ,該動作將觸發認證流程。
默認提供的內置用戶信息:用戶名/密碼為 admin/123456(我們也可以實現用戶服務接口 UserService ,提供真實業務的用戶信息)。在后端,當用戶名和密碼認證成功,則跳轉到登錄成功頁面,默認登錄成功頁面路由是 / ,否則,跳轉到登錄頁面 /login 。
接口與頁面保護
當我們添加了該組件后,默認對外的接口方法和頁面都會被保護起來(可以通過屬性 malagu.security.enabled 全局關閉方法保護),需要登錄以后才能訪問接口方法。我們也可以給接口方法配置需要擁有什么樣的權限才能訪問,該組件默認提供了 @PreAuthorize 裝飾器,定義接口方法需要什么樣的權限才能夠被訪問。
@Get() @PreAuthorize('hasRole("admin")') // 表示當前登錄的用戶需要擁有管理員角色才可訪問 @Transactional({ readOnly: true }) list(): Promise<User[]> {const repo = OrmContext.getRepository(User);return repo.find(); }當沒有登錄的時候,通過 ajax 直接訪問接口,將返回 401 狀態碼;通過瀏覽器訪問頁面,將返回 302 狀態碼,重定向到登錄頁面,登錄成功后,又會重定向到最開始要訪問的頁面。
登錄成功后,當我們有權限訪問該方法或頁面,則訪問成功,否則,訪問失敗,返回 403 狀態碼。
匿名訪問
方法上添加裝飾器 @Anonymous ,可以讓方法可以匿名訪問。
@Get() @Anonymous() @Transactional({ readOnly: true }) list(): Promise<User[]> {const repo = OrmContext.getRepository(User);return repo.find(); }也可以添加到類上,讓類的所有方法可以里面訪問。
@Controller('users') @Anonymous() export class UserController {... }相關鏈接
- Malagu 框架項目地址
- Malagu 框架文檔地址
總結
以上是生活随笔為你收集整理的易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 嵌套表格组件_使用form-cr
- 下一篇: anaconda+python3.7安装