实现springSecurity框架

单独给实现安全框架这一组拿出来,供大家使用参考

依赖

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

重写UserDetailsService(效验)

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws
            UsernameNotFoundException {
        //根据用户名查询用户信息
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getUserName,username);
        User user = userMapper.selectOne(wrapper);
        //如果查询不到数据就通过抛出异常来给出提示
        if(Objects.isNull(user)){
            throw new RuntimeException("用户名或密码错误");
        }
//        //TODO 根据用户查询权限信息 添加到LoginUser中
//
//        User user=new User();
//        user.setUserName(username);
//        //封装成UserDetails对象返回
        return new LoginUser(user);
    }
}

返回对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginUser implements UserDetails {
    private User user;
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return user.getPassword();
    }

    @Override
    public String getUsername() {
        return user.getUserName();
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}

model

package com.example.openai.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
 import java.util.Date;
 /**
 * 用户表(User)实体类
 *
 * @author 三更
 */
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @TableName("sys_user")
 public class User implements Serializable {
    private static final long serialVersionUID = -40356785423868312L;
    
    /**
    * 主键
    */
    @TableId
    private Long id;
    /**
    * 用户名
    */
    private String userName;
    /**
    * 昵称
*/
 private String nickName;
 /**
 * 密码
*/
 private String password;
 /**
 * 账号状态(0正常 1停用)
*/
 private String status;
 /**
 * 邮箱
*/
 private String email;
 /**
 * 手机号
*/
 private String phonenumber;
 /**
 * 用户性别(0男,1女,2未知)
*/
 private String sex;
 /**
 * 头像
*/
 private String avatar;
 /**
 * 用户类型(0管理员,1普通用户)
*/
 private String userType;
 /**
 * 创建人的用户id
 */
 private Long createBy;
 /**
 * 创建时间
*/
 private Date createTime;
 /**
 * 更新人
*/
 private Long updateBy;
 /**
 * 更新时间
*/
 private Date updateTime;
 /**
 * 删除标志(0代表未删除,1代表已删除)
*/
 private Integer delFlag;
 }

mapper

package com.example.openai.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.openai.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
 }

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/java20?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

posted @   浮白呀  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示