簡體   English   中英

春天如何添加攔截器

[英]how to add interceptor in spring

我正在為項目使用Spring Security 3.0.3。我的用戶信息是從數據庫中加載的。 我有以下攔截器

<intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
<intercept-url pattern="/**" access="ROLE_USER"/>

我想將攔截器添加到用戶數據。 當我使用user1(請求者作為角色)登錄時,他只能看到特定的user1數據。

http://localhost:7009/Test/requester//30351?menuId=app.requester.new

但是,當我使用另一個user2(請求者角色)登錄並在瀏覽器中輸入上述URL時。

http://localhost:7009/Test/requester//30351?menuId=app.requester.new. 

他可以看到user1數據。

如何添加攔截器,以限制其他用戶數據。

以下是場景1>使用user1登錄,當我單擊102數據時,他可以看到以下數據列表101 102 103,它打開了102數據的詳細信息。

http://localhost:7009/Test/requester//102?menuId=app.requester.new. 

2>使用user2登錄,他可以看到以下數據列表104105106

當我單擊105數據時,它將打開105數據的詳細信息。

http://localhost:7009/Test/requester//105?menuId=app.requester.new.

但是當我復制user1鏈接時

 http://localhost:7009/Test/requester//102?menuId=app.requester.new.  

並粘貼到瀏覽器中。 user2可以查看user1數據的詳細信息。

您不會在spring安全配置中過濾所有內容,而是在視圖或控制器中進行過濾。 這是一個很好的教程,向您展示了如何在您的案例中使用spring安全性。

http://static.springsource.org/spring-security/site/petclinic-tutorial.html

如果您在視圖中使用JSP,則可以使用spring security taglib來處理用戶自己的數據的視圖,對於其他用戶的數據,則需要將過濾邏輯放入控制器內部,並將其作為模型傳遞給視圖。 但是,確切的解決方案取決於您的應用程序。

一種選擇是使用Spring Expression Language和自定義的Permission Evaluator。 這是我們實現部門/子部門授權方案的方法,該方案如何使用spring mvc控制用戶身份驗證 這將允許您創建自定義邏輯以標識允許user1查看的內容,等等。

查看http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html 看一下@PostFilter注釋-如果您的數據集以集合或數組的形式返回,Spring Security可以基於您的自定義權限評估器自動過濾掉數據元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM