日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

具有Spring Security的Grails

發布時間:2023/12/3 javascript 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 具有Spring Security的Grails 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Spring Security與Grails集成的概述

Spring Security吹捧了許多身份驗證,授權,基于實例的功能以及各種其他功能,這些特性使其對使用安全的應用程序具有極大的吸引力。

考慮到這一點,由于Grails使用了Spring的Inversion of Control Framework和MVC設置,因此開發人員試圖使用Spring Security來保護Grails。

這產生了兩個值得注意的插件: Spring Security Core插件和Spring Security ACL插件 。

我們將審查這些Spring Security插件的功能,并與將Spring Security用于普通的舊Spring應用程序進行比較。

2. Spring Security Core插件

該插件提供了實用的默認設置以及許多用于自定義的配置選項。

2.1域類

Spring Security Core插件使用默認的Grails域類。 為了對插件使用標準查找,我們至少需要一個Person and Authority域類。

如果要在數據庫中存儲URL <==>角色映射(這是定義映射的幾種方法之一),則需要一個Requestmap域類。 如果我們使用推薦的方法來映射Person和Authority之間的多對多關系,那么我們還需要一個域類來映射聯接表。

要使用用戶/組查找,我們還需要一個組域類。 如果我們使用推薦的方法來映射“ 個人”和“ 組”之間以及“ 組”和“ 授權”之間的多對多關系,則每個域都需要一個域類來映射聯接表。 我們仍然可以通過這種方法另外使用Requestmap 。

我們可以使用s2-quickstart生成域類。 語法非常簡單:

grails s2-quickstart DOMAIN_CLASS_PACKAGE USER_CLASS_NAME ROLE_CLASS_NAME [REQUESTMAP_CLASS_NAME] [--groupClassName=GROUP_CLASS_NAME]

具有Person , Authority和Requestmap的示例 :

grails s2-quickstart com.ourapp Person Authority Requestmap

2.2配置請求映射以保護URL

我們可以選擇以下方法來配置請求映射以保護URL:

  • @Secured批注。 這被認為是默認方法。
  • application.groovy中的Map。 這稱為靜態地圖
  • 存儲在數據庫中的 Requestmap 域類實例

我們一次只能使用一種方法。

例如,這里使用@Secured批注和Spring Expression Language(SpEL):

class SecureController {@Secured("hasRole('ROLE_USER')")def someRandomAction() {...}

2.3其他各種功能

Spring Security Core插件的一些各種功能包括:

  • 用于處理較低級別的Spring Security的幫助程序類,例如SecurityTagLib ,它提供GSP標簽以支持基于用戶是否通過身份驗證和/或具有執行特定操作所需的角色的條件顯示。
  • 事件–包括事件通知,事件偵聽器和回調關閉。
  • 過濾器,包括定義將哪些過濾器應用于不同的URL模式的功能。

3. Spring Security ACL插件

Spring Security ACL插件向使用上述Spring Security Core插件的Grails應用程序添加了域對象安全支持。 因此,我們需要在build.gradle中已有其他插件。

添加域對象安全性支持是什么意思? Spring Security Core插件和其他擴展插件支持通過規則來限制對URL的訪問,這些規則包括檢查用戶的身份驗證狀態,角色等。ACL插件通過添加對限制訪問各個域類實例的支持來擴展此功能。

3.1方法安全性

Spring Security中通常提供的四個注釋可與Spring Expression Language(SpEL)表達式一起使用,以執行基于表達式的訪問控制 :

  • @PreAuthorize
  • @PreFilter
  • @PostAuthorize
  • @PostFilter

以上注釋全部記錄在Spring Security文檔的“ 方法安全性表達式”部分中。

使用方法安全性的能力是Spring Security ACL插件和Spring Security Core插件之間的非常重要的區別。 如果要實現細粒度的訪問控制,則出于這個原因,必須使用Spring Security ACL插件。

值得慶幸的是,除了Groovy和Java之間的語法差異之外,該代碼實際上看起來是相同的:

@PreAuthorize("hasRole('ROLE_USER')")@PostFilter("hasPermission(filterObject, read) or " +"hasPermission(filterObject, admin)")List getAllDocs(params = [:]) {Report.list(params)}

3.2域類

像Spring Security Core插件一樣,Spring Security ACL插件使用域類進行適當的結構化。

在這種情況下,域類用于管理數據庫狀態。 為了與通常基于JDBC的Spring Security代碼兼容,將創建域類以生成表名和列名。

該插件中與持久性關聯的類使用這些類。 但是,可以通過運行s2-create-acl-domains腳本來覆蓋它們:

grails s2-create-acl-domains

因此,該腳本將在應用程序的grails-app/domain文件夾中生成相同的域類,以進行一些自定義。

3.3各種其他功能

Spring Security ACL插件的一些各種功能包括:

  • 身份驗證運行替換:這是一個臨時身份驗證開關,僅持續進行一次方法調用。
  • 自定義權限: BasePermission類提供5種權限: READ , WRITE , CREATE , DELETE和ADMINISTRATION 。 您可以根據需要添加自己的權限。
  • 標簽庫(taglib)用于允許和拒絕。

4。結論

Spring Security Core插件提供了許多非常有用的功能,用于通過Spring Security保護Grails,但是為了實現更復雜,更細粒度的授權,必須結合使用Spring Security ACL插件。

推薦讀物: 基于創建者的授權資源(Spring Security)以及我關于Spring框架的文章,以獲取有關Spring的一般知識。

翻譯自: https://www.javacodegeeks.com/2019/01/grails-spring-security.html

總結

以上是生活随笔為你收集整理的具有Spring Security的Grails的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。