摘要:默認(rèn)配置所謂默認(rèn)配置就是對(duì)不做任何配置讓它的自動(dòng)配置起作用目的是對(duì)的默認(rèn)行為有一個(gè)初步的直觀的了解第一步使用的創(chuàng)建項(xiàng)目項(xiàng)目創(chuàng)建完成會(huì)自動(dòng)生成一個(gè)應(yīng)用入口類第二步創(chuàng)建一個(gè)控制器啟動(dòng)會(huì)在控制臺(tái)輸出中看到一個(gè)水機(jī)生成的格式的密碼最后打開(kāi)即可顯示
默認(rèn)配置
所謂默認(rèn)配置, 就是對(duì)Spring Security不做任何配置. 讓它的自動(dòng)配置起作用. 目的是對(duì)Spring Security 的默認(rèn)行為有一個(gè)初步的直觀的了解.第一步: 使用Intellj IDEA的 Spring Initializr 創(chuàng)建項(xiàng)目
項(xiàng)目創(chuàng)建完成會(huì)自動(dòng)生成一個(gè)應(yīng)用入口類
package com.example.demowebfluxsecurityinmemory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoWebfluxSecurityInMemoryApplication { public static void main(String[] args) { SpringApplication.run(DemoWebfluxSecurityInMemoryApplication.class, args); } }第二步: 創(chuàng)建一個(gè)控制器
package com.example.demowebfluxsecurityinmemory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; import java.security.Principal; import java.util.Collections; import java.util.Map; @RestController public class UserController { @GetMapping("/") public Mono
mvn spring-boot:run 啟動(dòng), 會(huì)在控制臺(tái)輸出中看到一個(gè)水機(jī)生成的UUID格式的密碼:
最后, 打開(kāi) http://localhost:8080/login 即可顯示登錄頁(yè)面, 默認(rèn)用戶名稱為 user. 到這里, Spring Security 的默認(rèn)設(shè)置的樣子就是這樣的, 現(xiàn)實(shí)場(chǎng)景中是不可能這么簡(jiǎn)單的. 因此我們需要對(duì)它進(jìn)行定制
定制 自定義配置(自定義用戶賬號(hào))添加一個(gè)配置類, 如下:
package com.example.demowebfluxsecurityinmemory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.userdetails.MapReactiveUserDetailsService; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; @Configuration public class SecurityConfig { @Bean public MapReactiveUserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("user") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("admin") .roles("ADMIN") .build(); return new MapReactiveUserDetailsService(user, admin); } }
現(xiàn)在重啟服務(wù)器, 就可以使用自定義的用戶名和密碼登錄了.
ReactiveUserDetailsService 是Webflux Security的一個(gè)核心接口, 代表了Spring Security 安全體系中的用戶信息, 它只有一個(gè)接口方法Mono
作用: 該接口方法的作用是從各種存儲(chǔ)中獲取用戶信息. 通過(guò)該接口拿到了用戶的信息, 就可以通過(guò)判斷用戶的狀態(tài)進(jìn)行認(rèn)證, 授權(quán)等操作.
這個(gè)接口的作用就一個(gè): 獲取 UserDetails 對(duì)象.
package org.springframework.security.core.userdetails; import reactor.core.publisher.Mono; public interface ReactiveUserDetailsService { MonofindByUsername(String username); }
MapReactiveUserDetailsService 實(shí)現(xiàn)了 UserDetailsService 接口, 其 findByUsername 方法是從一個(gè) Map 中去獲取 UserDetails 對(duì)象. 因此能夠管理多個(gè) UserDetails 對(duì)象.
其實(shí)現(xiàn)代碼為:
@Override public MonofindByUsername(String username) { String key = getKey(username); UserDetails result = users.get(key); return result == null ? Mono.empty() : Mono.just(User.withUserDetails(result).build()); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11374.html
摘要:用于發(fā)布身份驗(yàn)證事件的。導(dǎo)入用于安全,配置身份驗(yàn)證,這在非應(yīng)用程序中也是相關(guān)的。安全出于安全考慮,除和之外的所有默認(rèn)禁用,屬性可用于啟用。有關(guān)保護(hù)的其他信息可以在參考指南中找到。 28. 安全 如果在類路徑上有Spring Security,那么web應(yīng)用程序默認(rèn)是安全的,Spring Boot依賴Spring Security的內(nèi)容協(xié)商策略來(lái)決定是使用httpBasic還是formL...
摘要:在發(fā)出經(jīng)過(guò)身份驗(yàn)證的請(qǐng)求時(shí),被認(rèn)為是端點(diǎn)的輸入,因此不會(huì)緩存響應(yīng)。自定義端點(diǎn)對(duì)或的操作通過(guò)使用或通過(guò)自動(dòng)公開(kāi)。端點(diǎn)范圍請(qǐng)求范圍請(qǐng)求可以用于請(qǐng)求資源的一部分,當(dāng)使用或時(shí),操作將返回一個(gè)自動(dòng)支持范圍請(qǐng)求的。 50. 端點(diǎn) Actuator端點(diǎn)讓你監(jiān)視和與應(yīng)用程序交互,Spring Boot包含許多內(nèi)置的端點(diǎn),并允許你添加自己的端點(diǎn)。例如,health端點(diǎn)提供基本的應(yīng)用程序健康信息。 可以啟...
摘要:并向注冊(cè)中心注冊(cè),注冊(cè)地址為,最后將的所有端口暴露出來(lái),配置如下在工程的啟動(dòng)類加上注解,開(kāi)啟的功能,加上注解開(kāi)啟的功能。在啟動(dòng)類加上注解,開(kāi)啟的功能。 轉(zhuǎn)載請(qǐng)標(biāo)明出處: https://www.fangzhipeng.com本文出自方志朋的博客 Spring Boot Admin簡(jiǎn)介 Spring Boot Admin是一個(gè)開(kāi)源社區(qū)項(xiàng)目,用于管理和監(jiān)控SpringBoot應(yīng)用程序。 ...
摘要:在逐步開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)自己需求,用戶使用,頁(yè)面樣式,做得都不是很好。希望很和牛逼的人合作,一齊完善這個(gè)項(xiàng)目,能讓它變成可以使用的產(chǎn)品。自己也可以在此不斷學(xué)習(xí),不斷累計(jì)新的知識(shí),慢慢變強(qiáng)起來(lái)。 showImg(https://segmentfault.com/img/bVboKz5);#### 這一個(gè)什么項(xiàng)目 ##### 使用技術(shù) Spring MVC Spring Security ...
摘要:下一代服務(wù)端開(kāi)發(fā)下一代服務(wù)端開(kāi)發(fā)第部門(mén)快速開(kāi)始第章快速開(kāi)始環(huán)境準(zhǔn)備,,快速上手實(shí)現(xiàn)一個(gè)第章企業(yè)級(jí)服務(wù)開(kāi)發(fā)從到語(yǔ)言的缺點(diǎn)發(fā)展歷程的缺點(diǎn)為什么是產(chǎn)生的背景解決了哪些問(wèn)題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級(jí)服務(wù)開(kāi)發(fā)在移動(dòng)開(kāi)發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》 Kotlin + Spring Boot : 下一代 Java...
閱讀 2645·2021-10-08 10:04
閱讀 2744·2021-09-06 15:02
閱讀 831·2019-08-30 13:50
閱讀 1560·2019-08-30 13:21
閱讀 2595·2019-08-30 11:15
閱讀 2123·2019-08-29 17:19
閱讀 1590·2019-08-26 13:55
閱讀 1267·2019-08-26 10:15