Spring Security3.0入門
所有的許可權驗證都混雜在業務邏輯中,使用者的每個操作可能都需要對使用者是否有該許可權進行判斷。類似這樣的驗證程式碼被分散在系統的許多地方,難以維護。
正如系統日誌,事務管理等這些系統級的服務一樣,我們應該將它作為系統的一個單獨的“切面”進行管理,以達到業務邏輯與系統級的服務真正分離的目。
Spring Security將系統的安全邏輯從業務中分離出來。
Spring Security提供有若干個過濾器,它們能夠攔截Servlet請求,並將這些請求轉給認證和訪問的決策管理器處理,從而增強安全性。
Spring Security3.0簡介
Spring Security,這是一種基於Spring AOP和Servlet過濾器的安全框架。
它提供全面的安全性解決方案,同時在 Web 請求級和方法呼叫級處理身份確認和授權。
它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了依賴注入(DI,Dependency Injection)和AOP(面向切面)技術
配置 web.xml 檔案
服務啟動時載入所有以applicationContext開頭的xml檔案
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml
</param-value>
</context-param>
<!--Spring容器啟動監聽器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!—代理過濾器的類,它就相當於是一個入口,web容器啟動的時候,由它到spring容器中啟動 spring Security 需要的過濾器鏈。-->
配置applicationContext.xml
配置applicationContext.xml
auto-config屬性值為true,表示配置SpringSecurity自帶的所有過濾器。
intercept-url pattern定義要攔截的訪問地址,/**表示攔截src下所有訪問路徑。
access 屬性表示可以訪問此路徑的角色。
那麼 ROLE_USER角色 在哪裡定義呢?
如果使用者名稱為 user,密碼為 user 的使用者成功登入了,它的角色是 ROLE_USER ,那麼他可以訪
問規定的資源。 authorites屬性表示設定固定的角色
編寫首頁
目前為止,專案中只有一個 index.jsp
在這個頁面上只需要寫一句話
將專案部署到 web 伺服器中,然後訪問首頁 index.jsp,我們發現首頁並沒有出現,而是跳轉到了 一個登入頁面上。
因為專案剛啟動,第一次訪問的時候,沒有任何使用者登入,而在配置檔案中我們攔截的是所有的請求,所以第一次請求被攔截了。
輸入剛才在配置檔案中的配置
使用者名稱:user,密碼:user
提交後,發現能夠正確的轉到首頁
那個登入頁面哪裡來的?
當有請求來到的時候,Spring Security 框架開始檢查要訪問的資源是否有許可權訪問,如果當前登入使用者無許可權訪問或者當前根本就沒有使用者登入,則 Spring Securtiy 框架就會自動生成一個 登入頁面。
當在登入頁面進行了正確的登入後,Spring Security會自動進行登入驗證,如果成功登入,將使用者資訊放到 session 中,然後轉到先前請求的頁面上。
我們可以在 index 中將 session 中的 key—value 列印出來,看看 Spring Security 將使用者資訊如何放到 session 中的:
相關文章
- Spring 入門Spring
- Spring系列—Spring入門Spring
- Spring Boot入門Spring Boot
- spring 快速入門Spring
- spring入門(二)Spring
- 1、Spring入門Spring
- Spring入門指南Spring
- Spring Boot Dubbo 入門Spring Boot
- spring mvc 快速入門SpringMVC
- Spring Security 快速入門Spring
- Spring Security 入門篇Spring
- Spring MVC 入門程式SpringMVC
- Spring Security(一)入門Spring
- spring入門學習Spring
- spring boot快速入門Spring Boot
- #Spring JdbcTemplate入門@FDDLCSpringJDBC
- Spring Cloud Gateway 入門SpringCloudGateway
- spring 01 入門案例Spring
- Spring Boot HttpExchange 入門Spring BootHTTP
- 入門Spring6Spring
- Spring入門(一):建立Spring專案Spring
- Spring Cloud Gateway入門 - spring.ioSpringCloudGateway
- Spring Cloud Gateway 入門案例SpringCloudGateway
- Spring入門配置(一) - IOCSpring
- Spring Shell入門介紹Spring
- Spring Boot (一)快速入門Spring Boot
- Spring Boot 2.0.1 入門教程Spring Boot
- Spring Boot的Kafka入門Spring BootKafka
- Go-Spring入門篇GoSpring
- spring+motan+zookeeper入門Spring
- Spring MVC入門教程(一)SpringMVC
- Spring MVC入門教程(二)SpringMVC
- Spring Boot(一):入門篇Spring Boot
- spring入門aop和iocSpring
- Spring Boot 整合 Spring Security 入門案例教程Spring Boot
- Spring入門(七):Spring Profile使用講解Spring
- Spring Boot系列(一):Spring Boot 入門篇Spring Boot
- Spring(一):Spring概念、基本例子入門Spring