1. 程式人生 > >OAuth2.0學習(1-13)OAuth2.0的投票機制和投票器

OAuth2.0學習(1-13)OAuth2.0的投票機制和投票器

認證 cnblogs https user ring pri log 訪問 表達式語言

轉載自:https://my.oschina.net/bigyuan/blog/352204

1、三種投票器,默認是 一票制

技術分享

配置方式

技術分享

技術分享

decisionVoters屬性

在我們不聲明AccessDecisionManager時,decisionVoters屬性是自動配置的。

默認的AccessDecisionManager要求我們配置投票器的一個列表,它們將會在認證決策時用到。

技術分享

2、自定義投票器

投票器,實現AccessDecisionVoter接口並在配置中添加我們的實現

3、使用 Spring 表達式語言配置訪問控制

技術分享

添加後將要修改用來進行攔截器規則聲明的 access 屬性,改為 SpEL 表達式。 SpEL 允許使用特定的訪問控制規則表達式語言。

與簡單的字符串如 ROLE_USER 不同,配置文件可以指明表達式語言觸發方法調用、引用系統屬性、計算機值等等。

SpEL 的語法與其他的表達式語言很類似,如在 Tapestry 等框架中用到的 Object Graph Notation Language (OGNL) ,以及用於 JSP 和 JSF 的 Unified Expression Language 。

如果你通過使用 use-expressions 屬性啟用了 SpEL 表達式訪問控制,將會使得自動配置的 RoleVoter 實效,後者能夠使用角色的聲明,正如在前面的例子所見到的那樣:

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

這意味著如果你僅僅想通過角色來過濾請求的話,訪問控制聲明必要要進行修改。幸運的的是,這已經被充分考慮過了,一個 SpEL 綁定的方法 hasRole 能夠檢查角色。

技術分享

技術分享

OAuth2.0學習(1-13)OAuth2.0的投票機制和投票器