2015-04-05 62 views
2

我學習春季安全,我找到了一些困難,瞭解攔截的URL的概念,並回答這個questiong,我覺得對我的學習材料:Spring Security intercept-url的工作方式如何?

在其中爲了你必須寫多個攔截網址的?

所以,在我的學習材料,我發現這個實際例子:

<beans> 
    <security:http> 
     <security:intercept-url pattern="/accounts/edit*" 
access="ROLE_ADMIN" /> 
     <security:intercept-url pattern="/accounts/account*" 
access="ROLE_ADMIN,ROLE_USER" /> 
     <security:intercept-url pattern="/accounts/**" 
access="IS_AUTHENTICATED_FULLY" /> 
     <security:intercept-url pattern="/customers/**" 
access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    </security:http> 
</beans> 

而且它明確指出:

攔截的URL中列出的順序進行評估:第一場比賽被使用, 先放置特定的匹配。

但是什麼意思呢?

所以我知道攔截的URL的安全命名空間的被用來定義什麼是URL,以確保(糾正我,如果我斷言錯誤的事情)。

所以在前面的例子中被固定以下網址:

  • /帳號/編輯*
  • /賬戶/賬號*
  • /帳號/ **
  • /客戶/ **

但是,究竟代表什麼樣的訪問角色?

例如爲/賬戶/編輯* URL指定了存取= 「ROLE_ADMIN」

對於/帳戶/帳戶* URL指定了存取=「ROLE_ADMIN,ROLE_USER 「

等等。究竟是什麼意思?我認爲這意味着,但我毫不知情,如果用戶嘗試訪問/accounts/edit *它必須是管理員,而不是他嘗試訪問/accounts/account *它可以是管理員,也可以是普通用戶。

這個解釋是正確的還是不正確的?

如果它是正確的我怎麼可以指定如果用戶「屬於」 ROLE_ADMINROLE_USER?究竟代表什麼以及它在哪裏定義?

究竟是什麼意思,截取的網址按列出的順序進行評估:使用第一個匹配,首先放置特定匹配

+0

角色本身是由你定義的 - 你可以創建任意數量的角色,你可以給他們任意你想要的名字。然後你可以指定每個角色可以或不可以做的事情。關於「攔截 - 按照列出的順序進行評估:使用第一次匹配,首先放置特定的匹配?」,我真的不知道它應該是什麼意思:) – libik 2015-04-05 15:42:54

回答

1

您可以隨意定義角色,並根據需要爲每個角色設置權限訪問權限。

的攔截的URL需要從多到少的具體上市,因爲如果你把至少一個特定第一,這樣的:

模式=「/富/酒吧/ **」 模式=「/ foo/bar/baz *「

當某人導航到/ foo/bar/baz時,來自/ foo/bar的權限設置將被應用,因爲它與攔截URL列表中的第一個匹配。這需要開發人員付出更多努力,但這比在列表中的每個URL上匹配確切字符串要快。希望這可以幫助。

+0

好吧,你對我說,當我做一些事情: 這意味着如果爲此用戶驗證了ROLE_ADMIN角色,則可以從用戶訪問/ accounts/edit *資源。但是這意味着「ROLE_ADMIN」是角色的名字?如果這是真的,你能告訴我一個如何定義角色的例子嗎? Tnx – AndreaNobili 2015-04-05 16:33:31

+1

這是正確的。可以在security-config.xml文件中指定用戶的角色,並將訪問限制直接添加到JSP中。 [看例子](http://www.concretepage.com/spring/spring-security/how-to-access-roles-and-user-details-using-spring-security) – kurofune 2015-04-05 17:03:20

+0

Tnx這麼多,貼的例子解決我的疑惑 – AndreaNobili 2015-04-05 17:56:56

相關問題