自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

acegi到Spring security的轉(zhuǎn)換方式

開發(fā) 后端
本文主要介紹了如果把之前建立在acegi基礎(chǔ)上的spring應(yīng)用轉(zhuǎn)換到spring security 2.0上。

以前叫做spring的acegi安全框架,現(xiàn)在重新標(biāo)識為spring security 2.0,它實(shí)現(xiàn)了簡易配置的承諾,提高了開發(fā)者的生產(chǎn)力。它已經(jīng)是java平臺上應(yīng)用最廣的安全框架了,在sourceforge上擁有250,000的下載量,Spring Security 2.0又提供了一系列的新功能。

Spring Security是什么

Spring Security是目前用于替換acegi的框架,它提供了一系列新的功能。
◆大為簡化了配置
◆繼承OpenID,標(biāo)準(zhǔn)單點(diǎn)登錄
◆支持windows NTLM,在windows合作網(wǎng)絡(luò)上實(shí)現(xiàn)單點(diǎn)登錄
◆支持JSR 250("EJB 3")的安全注解
◆支持AspectJ切點(diǎn)表達(dá)式語言
◆全面支持REST Web請求授權(quán)
◆長期要求的支持組,層級角色和用戶管理API
◆提升了功能,使用后臺數(shù)據(jù)庫的remember-me實(shí)現(xiàn)
◆通過spring webflow 2.0對web狀態(tài)和流轉(zhuǎn)授權(quán)進(jìn)行新的支持
◆通過Spring Web Services 1.5加強(qiáng)對WSS(原來的WS-Security)的支持
◆整個(gè)更多的……

目標(biāo)

目前,我工作在一個(gè)spring的web應(yīng)用上,使用acegi控制對資源的訪問權(quán)限。用戶信息保存在數(shù)據(jù)庫中,我們配置acegi使用了基于JDBC的UserDetails服務(wù)。同樣的,我們所有的web資源都保存在數(shù)據(jù)庫里,acegi配置成使用自定義的 AbstractFilterInvocationDefinitionSource,對每個(gè)請求檢測授權(quán)細(xì)節(jié)。

隨著Spring Security 2.0的發(fā)布,我想看看是不是可以替換acegi,但還要保持當(dāng)前的功能,使用數(shù)據(jù)庫作為我們驗(yàn)證和授權(quán)的數(shù)據(jù)源,而不是xml配置文件(大多數(shù)演示程序里使用的都是xml)。

這里是我采取的步驟……


步驟


1.第一步(也是最重要的)是下載新的Spring Security 2.0框架,并確保jar文件放到正確的位置(/WEB-INF/lib/)。
Spring Security 2.0下載包里包含22個(gè)jar文件。我不需要把它們?nèi)蒙希ㄓ绕涫悄切﹕ources包)。在這次練習(xí)中我僅僅包含了以下幾個(gè):
◆spring-security-acl-2.0.0.jar
◆spring-security-core-2.0.0.jar
◆spring-security-core-tiger-2.0.0.jar
◆spring-security-taglibs-2.0.0.jar


2.在web.xml文件里配置一個(gè)DelegatingFilterProxy


3.Spring Security 2.0的配置比acegi簡單太多了,所以我沒有在以前acegi配置文件的基礎(chǔ)上進(jìn)行修改,我發(fā)現(xiàn)從一個(gè)空白文件開始更簡單。如果你想修改你以前的配置文件,我確定你刪除的行數(shù)比添加的行數(shù)還要多。配置文件的第一部分是指定安全資源過濾器的細(xì)節(jié),這讓安全資源可以通過數(shù)據(jù)庫讀取,而不是在配置文件里保存信息。這里是一個(gè)你將在大多數(shù)例子中看到的代碼。
使用這些內(nèi)容進(jìn)行替換:
這段配置的主要部分secureResourceFilter,這是一個(gè)實(shí)現(xiàn)了FilterInvocationDefinitionSource 的類,它在Spring Security需要對請求頁面檢測權(quán)限的時(shí)候調(diào)用。這里是MySecureResouceFilter的代碼:
getAttributes()方法返回權(quán)限的名稱(我稱之為角色),它們控制當(dāng)前url的訪問權(quán)限。


4.好了,現(xiàn)在我們需要安裝信息數(shù)據(jù)庫,下一步是讓Spring Security從數(shù)據(jù)庫中讀取用戶信息。這個(gè)Spring Security 2.0的例子告訴你如何從下面這樣的配置文件里獲得用戶和權(quán)限的列表:

你可以把這些例子的配置替換掉,這樣你可以像這樣從數(shù)據(jù)庫中直接讀取用戶信息:

這里有一種非??焖偃菀椎姆椒▉砼渲冒踩珨?shù)據(jù)庫,意思是你需要使用默認(rèn)的數(shù)據(jù)庫表結(jié)構(gòu)。默認(rèn)情況下,<jdbc-user- service>需要下面的幾個(gè)表:user,authorities,groups,group_members和 group_authorities。

我的情況下,我的安全數(shù)據(jù)庫表無法這樣工作,它和<jdbc-user-service>要求的不同,所以我需要修改<authentication-provider>:

通過添加users-by-username-query和authorities-by-username-query屬性,你可以使用你自己的 SQL覆蓋默認(rèn)的SQL語句。就像在acegi中一樣,你必須確保你的SQL語句返回的列與Spring Security所期待的一樣。這里有另一個(gè)group-authorities-by-username-query屬性,我在這里沒有用到,所以也沒有出現(xiàn)在這里例子中,不過它的用法與其他兩個(gè)SQl語句的方法完全一致。

<jdbc-user-service>的這些功能大概是在上個(gè)月才加入的,在Spring Security之前版本中是無法使用的。幸運(yùn)的是它已經(jīng)被加入到Spring Security中了,這讓我們的工作更加簡單。你可以通過 這里 和這里 獲取信息。

dataSource bean中指示的是鏈接數(shù)據(jù)庫的信息,它沒有包含在我的配置文件中,因?yàn)樗⒉恢挥迷诎踩?。這里是一個(gè)dataSource的例子,如果誰不熟悉可以參考一下:


5.這就是Spring Security的所有配置文件。我最后一項(xiàng)任務(wù)是修改以前的登陸頁面。在acegi中你可以創(chuàng)建自己的登陸<form>,向正確的URL發(fā)送正確命名的HTML輸入元素?,F(xiàn)在你也可以在Spring Security 2.0里這樣做,只是一些名稱發(fā)生了改變。你可以像以前一樣使用用戶名j_username和密碼j_password。

但是你必須把<form>中的action指向j_spring_security_check而不是j_acegi_security_check。

在你的應(yīng)用中有一些地方,用戶可以進(jìn)行注銷,這是一個(gè)鏈接把注銷請求發(fā)送給安全框架,這樣它就可以進(jìn)行相應(yīng)的處理。需要把它從j_acegi_logout改成j_spring_security_logout。

總結(jié)

這個(gè)簡短的指南,包含了如何配置Spring Security 2.0使用數(shù)據(jù)庫中的資源,它并沒有演示Spring Security 2.0中的新特性,然而我想它可以演示一些非常常用的框架功能,我希望你們覺得它有用。

Spring Security 2.0與acegi相比的好處之一是配置文件非常簡單,這在我比較老acegi配置文件(172行)和新配置文件(42行)的時(shí)候,清楚的顯示出路愛。

這里是我完整的securityContext.xml文件:

就像在第一步時(shí)提到到,下載Spring Security是最重要的步驟。從那里開始就可以一帆風(fēng)順了。

【編輯推薦】

  1. Spring IDE的2.0版的未來計(jì)劃
  2. Eclipse下spring配置的應(yīng)用
  3. 在Spring中裝配bean的基本xml配置
  4. 用Spring framework實(shí)現(xiàn)定時(shí)器功能
  5. 簡單介紹Spring Timer
責(zé)任編輯:佚名 來源: 網(wǎng)易博客
相關(guān)推薦

2020-06-17 08:31:10

權(quán)限控制Spring Secu

2021-07-27 10:49:10

SpringSecurity權(quán)限

2009-06-19 09:52:46

Acegi安全框架Spring框架

2021-04-23 07:33:10

SpringSecurity單元

2021-08-29 18:36:57

項(xiàng)目

2023-04-10 11:41:15

2013-04-07 09:57:45

CouchbaseMySQLNoSQL

2022-01-26 00:05:00

接口Spring管理器

2022-11-26 00:00:02

2022-05-19 11:29:14

計(jì)時(shí)攻擊SpringSecurity

2023-12-08 12:12:21

2022-08-30 08:50:07

Spring權(quán)限控制

2009-06-22 16:19:40

Acegi安全系統(tǒng)JSF

2022-08-15 08:42:46

權(quán)限控制Spring

2022-08-30 08:43:11

Spring權(quán)限控制

2022-08-30 08:36:13

Spring權(quán)限控制

2022-08-30 08:55:49

Spring權(quán)限控制

2022-08-15 08:45:21

Spring權(quán)限控制

2022-06-16 10:38:24

URL權(quán)限源代碼

2021-04-19 07:33:04

WebSecuritySpringHttpSecurit
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號