欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringSecurity中的UserDetails和UserDetailsService接口詳解

 更新時(shí)間:2023年11月22日 10:03:40   作者:杜小舟  
這篇文章主要介紹了SpringSecurity中的UserDetails和UserDetailsService接口詳解,UserDetailsService 在 Spring Security 中主要承擔(dān)查詢系統(tǒng)內(nèi)用戶、驗(yàn)證密碼、封裝用戶信息和角色權(quán)限,需要的朋友可以參考下

UserDetails

UserDetails 在 Spring Security 框架中主要擔(dān)任獲取用戶信息的接口,通過該接口就能拿到用戶的信息和驗(yàn)證用戶的信息,這些信息在下面的方法中會(huì)有講述。

UserDetails 接口中各個(gè)方法詳解

方法名作用
Collection<? extends GrantedAuthority> getAuthorities()授予用戶的權(quán)限
String getPassword()用戶的密碼(當(dāng)前密碼是經(jīng)過加密后的)
String getUsername()用戶名
boolean isAccountNonExpired()用戶的賬號是否過期
true 未過期 false 已過期
boolean isAccountNonLocked()用戶的賬號是否被鎖定
true 未被鎖定 false 被鎖定
boolean isCredentialsNonExpired()用戶的憑據(jù)(密碼)是否已過期
true 未過期 false 已過期
boolean isAccountNonExpired()用戶是否啟用
true 啟用 false 禁用

UserDetailsService

UserDetailsService 在 Spring Security 中主要承擔(dān)查詢系統(tǒng)內(nèi)用戶、驗(yàn)證密碼、封裝用戶信息和角色權(quán)限。

大白話就是你寫一個(gè)實(shí)現(xiàn)類實(shí)現(xiàn) UserDetailsService 接口,在這個(gè)實(shí)現(xiàn)類中去查詢數(shù)據(jù)庫中的用戶,并封裝成一個(gè)實(shí)現(xiàn)了 UserDetails 接口的實(shí)體類模型。

UserDetailsService 具體操作

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.security.mysql.dao.UserDao;
import com.security.mysql.entity.UserEntity;
import com.security.user.UserDetailsInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;


@Component
@Slf4j
public class UserDetailsServiceImpl implements UserDetailsService {

	// TODO 這里改成你自己的服務(wù)或者Dao查詢
    @Autowired
    private UserDao userDao;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        log.info("進(jìn)入 loadUserByUsername ...");
        // TODO 查詢系統(tǒng)內(nèi)的用戶
        LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(UserEntity::getUsername, username);
        UserEntity userEntity = userDao.selectOne(wrapper);
        if (userEntity == null) {
            // 未查詢到用戶
            throw new RuntimeException("not find user");
        }

		// TODO 封裝成實(shí)現(xiàn)了 UserDetails 接口的實(shí)體類模型
        return UserDetailsInfo.builder()
                .id(userEntity.getId())
                .username(userEntity.getUsername())
                .password(userEntity.getPassword())
                .build();
    }

}

UserDetailsService 方法介紹

方法名作用
UserDetails loadUserByUsername(String username)根據(jù)用戶名加載用戶信息

到此這篇關(guān)于SpringSecurity中的UserDetails和UserDetailsService接口詳解的文章就介紹到這了,更多相關(guān)UserDetails和UserDetailsService接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RabbitMQ?Stream插件使用案例代碼

    RabbitMQ?Stream插件使用案例代碼

    這篇文章主要介紹了RabbitMQ?Stream插件使用案例代碼,2.4版為RabbitMQ流插件引入了對RabbitMQStream插件Java客戶端的初始支持,需要的朋友可以參考下
    2024-04-04
  • Java模擬rank/over函數(shù)實(shí)現(xiàn)獲取分組排名的方法詳解

    Java模擬rank/over函數(shù)實(shí)現(xiàn)獲取分組排名的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java模擬rank()、over()函數(shù)獲取分組排名的方法設(shè)計(jì)及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • SpringCloud中數(shù)據(jù)認(rèn)證加密的方法總結(jié)

    SpringCloud中數(shù)據(jù)認(rèn)證加密的方法總結(jié)

    在當(dāng)今分布式系統(tǒng)的日益復(fù)雜和信息傳遞的廣泛網(wǎng)絡(luò)化環(huán)境中,數(shù)據(jù)的加密和認(rèn)證作為保障信息傳遞安全的關(guān)鍵手段,Spring?Cloud,作為一套構(gòu)建微服務(wù)架構(gòu)的強(qiáng)大框架,提供了多種靈活而強(qiáng)大的數(shù)據(jù)加密和認(rèn)證方式,本文給大家總結(jié)了SpringCloud數(shù)據(jù)認(rèn)證加密的方法
    2024-03-03
  • Java編程常見內(nèi)存溢出異常與代碼示例

    Java編程常見內(nèi)存溢出異常與代碼示例

    這篇文章主要介紹了Java編程常見內(nèi)存溢出異常與代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • mybatis快速入門學(xué)習(xí)教程新手注意問題小結(jié)

    mybatis快速入門學(xué)習(xí)教程新手注意問題小結(jié)

    MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級映射的優(yōu)秀的持久層框架。接下來通過本文給大家介紹mybatis快速入門學(xué)習(xí)教程新手注意問題小結(jié),需要的朋友可以參考下
    2017-02-02
  • Java中HashMap和HashTable區(qū)別

    Java中HashMap和HashTable區(qū)別

    HashMap和Hashtable都是Java常見的基于哈希表實(shí)現(xiàn)的Map接口的實(shí)現(xiàn)類,本文主要介紹了Java中HashMap和HashTable區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 簡單介紹一下什么是microservice微服務(wù)

    簡單介紹一下什么是microservice微服務(wù)

    這篇文章主要介紹了一下什么是microservice微服務(wù)微服務(wù)的定義,微服務(wù)到底是什么意思?什么樣的架構(gòu)可以叫做微服務(wù)?這篇文章可以給你答案
    2023-03-03
  • java中volatile和synchronized的區(qū)別與聯(lián)系

    java中volatile和synchronized的區(qū)別與聯(lián)系

    這篇文章主要介紹了java中volatile和synchronized的區(qū)別與聯(lián)系的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • springboot之如何獲取請求ip方法

    springboot之如何獲取請求ip方法

    這篇文章主要介紹了springboot之如何獲取請求ip方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    Java通過百度地圖API獲取定位(普通IP定位)的方法教程

    這篇文章主要介紹了Java通過百度地圖API獲取定位的方法教程,首先說明了實(shí)現(xiàn)這個(gè)功能的需求和初衷,然后詳細(xì)描述了利用百度地圖API實(shí)現(xiàn)這個(gè)功能的步驟,包括在百度地圖開放平臺(tái)的準(zhǔn)備工作、學(xué)習(xí)官網(wǎng)API文檔、修改API的AK配置、Java代碼獲取定位等,需要的朋友可以參考下
    2024-11-11

最新評論