泡泡SpringSecurity2.5【认证状态】

 


 

 

 

 

 

 

 

 


 

package com.haifei.service.impl;

import com.haifei.mapper.UserMapper;
import com.haifei.pojo.User;
import com.haifei.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 该方法来自UserService接口的父接口UserDetailsService,必须重写(覆盖)
     */
    @Override
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
        //根据账号查找用户信息
        User user = userMapper.findUserByUsername(s);
        if (user != null){
            //设置登录账号的角色
            List<SimpleGrantedAuthority> authorities = new ArrayList<>();
            authorities.add(new SimpleGrantedAuthority("ROLE_USER"));

            /*UserDetails userDetails = new org.springframework.security.core.userdetails.User(
                    user.getUsername(),
//                    "{noop}"+user.getPassword(), //不加密
                    user.getPassword(), //加密
                    authorities
            );*/

            UserDetails userDetails = new org.springframework.security.core.userdetails.User(
                    user.getUsername(),
                    user.getPassword(),
                    true, //是否可用
                    true, //账号是否过期
                    true, //凭证是否过期
                    true, //是否被锁定
                    authorities
            );
            return userDetails;
        }
        return null;
    }


    public static void main(String[] args) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        System.out.println(encoder.encode("123"));
        System.out.println(encoder.encode("123"));
        System.out.println(encoder.encode("123"));
        /*
        同一个明文的密文是不同的
        $2a$10$kckLzrC/LICmbFYurp6bZ.w2DYUmNou6k.ANXOHXGw6MNlyBlatc.
        $2a$10$RiZX6Y/W5G.e39sj392gOOjZpv.BQCiPKiPMvfP8B8ZrKFv5/PVPO
        $2a$10$9bOOecBUR4VuTWN0H/alZuEjrG/l2iib.NUesTIGLL4SE470RItEy
         */
    }

}
View Code

 

 

 

 

 

 

 

 

 

 

 登录失败

 

 

 

 

 

 

 

 登录成功

 


 

如果要做动态的,可以在用户的表结构中添加相关的字段来维护这种关系

boolean enabled
boolean accountNonExpired
boolean credentialsNonExpired
boolean accountNonLocked

 

posted @ 2021-08-17 14:13  yub4by  阅读(55)  评论(0)    收藏  举报