您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關java中如何使用SpringSecurity,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
shrio,SpringSecurity:認證,授權(VIP1,vip2…)
功能權限
訪問權限
菜單權限
攔截器,過濾器:大量的原生代碼,冗余
<!--Thymeleaf--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> </dependency>
Spring Security是針對Spring項目的安全框架,也是Spring Boot底層安全模塊默認的技術選型,他可以實現強大的Web安全控制,對于安全控制,我們僅需要引入Spring-boot-starter-security模塊,進行少量的配置,即可實現強大的安全管理!
記住幾個類:
WebSecurityConfigurerAdapter: 自定義Security策略
AuthenticationManagerBuilder:自定義認證策略
@EnableWebSecurity: 開啟WebSecurity模式 @Enablexxxx 開啟某個功能
Spring Security的兩個主要目標是“認證”和“授權”(訪問控制) .
“認證”(Authentication)
“授權”(Authorization)
這個概念是通用的,而不是只在Spring Security中存在。
<!--security--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
package com.kuang.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /*權限驗證的配置類,要先繼承WebSecurityConfigurerAdapter*/ @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { //定義訪問規則:首頁每個人都可以訪問,但是功能也只有特定權限的人才能訪問 鏈式編程 //授權 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/level1/**").hasRole("vip1") .antMatchers("/level2/**").hasRole("vip2") .antMatchers("/level3/**").hasRole("vip3"); //沒有權限默認跳轉到登陸頁面 /login http.formLogin(); } //認證 /* 密碼編碼: BCryptPasswordEncoder() 不編碼會報下面的錯誤 * java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null" * */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("qin").password(new BCryptPasswordEncoder().encode("111")).roles("vip1","vip2","vip3") .and() .withUser("aaa").password(new BCryptPasswordEncoder().encode("111")).roles("vip1"); } }
package com.kuang.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @Controller public class PathController { @GetMapping({"/","index"}) //"/""index"都會去到index.html public String Toindex(){ return "index"; } @GetMapping("/toLogin") public String Tologin(){ return "views/login"; } @GetMapping("/level1/{id}") //@PathVariable獲得url的占位符里面的值 public String ToView(@PathVariable("id")int id){ return "views/level1/"+id; } @GetMapping("/level2/{id}") public String ToView2(@PathVariable("id")int id){ return "views/level2/"+id; } @GetMapping("/level3/{id}") public String ToView3(@PathVariable("id")int id){ return "views/level3/"+id; } }
當然也可以在數據庫中拿信息
源碼分析
沒有權限的話會自動轉發到/login
//沒有權限默認跳轉到登陸頁面 /login
http.formLogin();
//開啟注銷
http.logout();
<!--thymeleof整合security--> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> xmlns:sec=http://www.thymeleaf.org/extras/spring-security
用spring-security實現用戶登錄后顯示用戶角色的信息
<!--thymeleof整合security--> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
關于“java中如何使用SpringSecurity”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。