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

SpringSecurity中的UserDetails和UserDetailsService接口詳解

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

UserDetails

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

UserDetails 接口中各個方法詳解

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

UserDetailsService

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

大白話就是你寫一個實現類實現 UserDetailsService 接口,在這個實現類中去查詢數據庫中的用戶,并封裝成一個實現了 UserDetails 接口的實體類模型。

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 這里改成你自己的服務或者Dao查詢
    @Autowired
    private UserDao userDao;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        log.info("進入 loadUserByUsername ...");
        // TODO 查詢系統(tǒng)內的用戶
        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 封裝成實現了 UserDetails 接口的實體類模型
        return UserDetailsInfo.builder()
                .id(userEntity.getId())
                .username(userEntity.getUsername())
                .password(userEntity.getPassword())
                .build();
    }

}

UserDetailsService 方法介紹

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

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

相關文章

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

    RabbitMQ?Stream插件使用案例代碼

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

    Java模擬rank/over函數實現獲取分組排名的方法詳解

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

    SpringCloud中數據認證加密的方法總結

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

    Java編程常見內存溢出異常與代碼示例

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

    mybatis快速入門學習教程新手注意問題小結

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

    Java中HashMap和HashTable區(qū)別

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

    簡單介紹一下什么是microservice微服務

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

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

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

    springboot之如何獲取請求ip方法

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

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

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

最新評論