成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Security: Webflux 默認(rèn)配置

luoyibu / 846人閱讀

摘要:默認(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 IDEASpring 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> hello(Mono principal) {
        return principal
            .map(Principal::getName)
            .map(this::helloMessage);
    }

    private Map helloMessage(String username) {
        return Collections.singletonMap("message", "Hello " + username + "!");
    }
}

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 findByUsername(String username);

作用: 該接口方法的作用是從各種存儲(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 {
    Mono findByUsername(String username);
}

MapReactiveUserDetailsService 實(shí)現(xiàn)了 UserDetailsService 接口, 其 findByUsername 方法是從一個(gè) Map 中去獲取 UserDetails 對(duì)象. 因此能夠管理多個(gè) UserDetails 對(duì)象.

其實(shí)現(xiàn)代碼為:

@Override
public Mono findByUsername(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

相關(guān)文章

  • Spring Boot 參考指南(安全)

    摘要:用于發(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...

    XanaHopper 評(píng)論0 收藏0
  • Spring Boot 參考指南(端點(diǎn))

    摘要:在發(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)用程序健康信息。 可以啟...

    mozillazg 評(píng)論0 收藏0
  • Spring Boot Admin 2.1.0 全攻略

    摘要:并向注冊(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)用程序。 ...

    TalkingData 評(píng)論0 收藏0
  • Spring MVC+Stomp+Security+H2 Jetty

    摘要:在逐步開(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 ...

    gitmilk 評(píng)論0 收藏0
  • 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開(kāi)發(fā) 》

    摘要:下一代服務(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...

    springDevBird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<