[英]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.