Java反轉陣列輸出例項程式碼
阿新 • • 發佈:2021-01-10
技術標籤:springboot
簡介
市面上存在比較有名的:Shiro,Spring Security !
一般來說,常見的安全管理技術棧的組合是這樣的:
- SSM + Shiro
- Spring Boot/Spring Cloud + Spring Security
專案建立
1. 新建springboot專案,增加web和thymeleay模組
2. 匯入相關靜態資源
3. controller跳轉
@Controller
public class RouterController {
@RequestMapping("/index" )
public String index(){
return "index";
}
@RequestMapping("/toLogin")
public String toLogin(){
return "views/login";
}
@RequestMapping("/level1/{id}")
public String level1(@PathVariable("id") int id){
return "views/level1/"+id;
}
@RequestMapping("/level2/{id}")
public String level2(@PathVariable("id") int id){
return "views/level2/"+id;
}
@RequestMapping("/level3/{id}")
public String level3(@PathVariable("id") int id) {
return "views/level3/"+id;
}
}
4. 測試
誰都可以訪問該網站的任意模組,我們使用 Spring Security 增加上認證和授權
的功能進行少量的配置,即可實現強大的安全管理!
springSecurity學習
依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
1. spring security實現認證
身份驗證通常通過使用者名稱和密碼完成,有時與身份驗證因素結合使用
@EnableWebSecurity // 開啟WebSecurity模式
public class WebSecurityConfig 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");
//沒有許可權預設會去登陸頁面http.formLogin()預設走他自己的路徑, http.formLogin().loginPage("/toLogin");可以自定義
http.formLogin().loginPage("/toLogin");
http.logout().logoutSuccessUrl("/index");
//開啟記住我, cokkie預設儲存兩週 , 在login.html有個checkbox remember
http.rememberMe().rememberMeParameter("remember");
}
}
2. spring security實現授權
授予您訪問資源(如資訊,檔案,資料庫,資金,位置,幾乎任何內容)的完全許可權。
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//passwordEncoder:密碼編碼
//在spring security5.0+中新增了很多加密方法
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//從記憶體中讀,也可以從資料庫中讀取 auth.jdbcAuthentication()
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("wang").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3")
.and()
.withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3")
.and()
.withUser("xiaoman").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
}
}