激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java SpringSecurity使用詳解

java SpringSecurity使用詳解

2021-12-08 12:50你好y Java教程

這篇文章主要介紹了java中Spring Security的實例詳解的相關資料,spring security是一個多方面的安全認證框架,提供了基于JavaEE規范的完整的安全認證解決方案,需要的朋友可以參考下

 

SpringSecurity

shrio,SpringSecurity:認證,授權(VIP1,vip2…)

  • 功能權限
  • 訪問權限
  • 菜單權限
  • 攔截器,過濾器:大量的原生代碼,冗余

 

1、pom.xml

 <!--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中存在。

 

1、pom.xml

 <!--security-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

 

2、Security的controller

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");
    }
}

 

3、路徑轉發的controller

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;
    }
}

當然也可以在數據庫中拿信息

java SpringSecurity使用詳解

源碼分析

沒有權限的話會自動轉發到/login

//沒有權限默認跳轉到登陸頁面 /login
http.formLogin();

java SpringSecurity使用詳解

//開啟注銷
http.logout();

java SpringSecurity使用詳解

 

注銷及權限控制

 

 <!--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實現用戶登錄后顯示用戶角色的信息

 

1、導入依賴thymeleof整合security

 <!--thymeleof整合security-->
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>

 

2、html命名空間

<html lang="en" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

 

3、根據用戶的登錄狀態進行判斷顯示該有的信息

java SpringSecurity使用詳解

 

4、根據源碼寫表單name屬性

java SpringSecurity使用詳解

java SpringSecurity使用詳解

 

5、實現有什么權限顯示什么樣的信息

java SpringSecurity使用詳解

 

6、注銷logout-404

java SpringSecurity使用詳解

 

總結

本片文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/qq_43430343/article/details/119919586

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 色播av在线 | 久久久久久久久久久国产精品 | 亚洲第一页在线观看 | 视频精品一区 | 日韩av片在线播放 | 法国性xxx精品hd | 免费高潮在线国 | 免费久久精品 | 福利在线影院 | 视频一区国产精品 | 宅男视频在线观看免费 | 亚洲综合视频网 | 日韩毛片在线看 | 成人午夜视频免费在线观看 | 射逼网站 | 91成| 亚洲综人网 | 精品无码久久久久久国产 | 国产91九色视频 | 亚洲国产精品久久久久婷婷老年 | 日本在线播放一区二区 | 97久久曰曰久久久 | 亚洲射情| 在线观看免费毛片视频 | 日韩黄色精品 | 青青草成人av | 美女被免费网站在线软件 | 91精品久久久久久久久网影视 | 黄色特级| 成人免费久久 | 97精品国产高清在线看入口 | 亚洲一区二区三区精品在线观看 | 国产精品久久久久久婷婷天堂 | 欧美一区二区三区四区电影 | 成人激情久久 | 国产亚洲综合一区二区 | 成人爱情偷拍视频在线观看 | 国产精品久久久久久久久久三级 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 欧美国产一区二区三区 | 狠狠色成色综合网 |