栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

SpringSecurity系列之查询数据库认证

Java 更新时间:发布时间: 百科书网 趣学号

上篇:Spring Security系列之基本原理

一、整合mybatis plus 完成数据库操作

项目工程结构如下:

1、引入pom文件依赖
        
            com.baomidou
            mybatis-plus-boot-starter
            3.0.5
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.projectlombok
            lombok
        

完整的pom文件配置



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.5
         
    
    org.apache.security
    springsecuritydemo
    0.0.1-SNAPSHOT
    springsecuritydemo
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-security
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.security
            spring-security-test
            test
        


        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.0.5
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.projectlombok
            lombok
        

    



2、创建数据库与数据表
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
3、创建bean
package org.apache.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String username;
    private String password;
}
4、创建mapper接口
package org.apache.mapper;


import com.baomidou.mybatisplus.core.mapper.baseMapper;
import org.apache.entity.Users;
import org.springframework.stereotype.Repository;

@Repository
public interface UsersMapper extends baseMapper {
}

实现它的接口方法

package org.apache.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.entity.User;
import org.apache.mapper.UsersMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userDetailsService")
public class MyUserDetailsService implements UserDetailsService {

    @Autowired
    private UsersMapper usersMapper;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //调用usersMapper方法,根据用户名查询数据库
        QueryWrapper wrapper = new QueryWrapper();
        // where username=?
        wrapper.eq("username",username);
        User users = usersMapper.selectOne(wrapper);
        //判断
        if(users == null) {//数据库没有用户名,认证失败
            throw  new UsernameNotFoundException("用户名不存在!");
        }
        List auths =
                AuthorityUtils.commaSeparatedStringToAuthorityList("admin,ROLE_sale");
        //从查询数据库返回users对象,得到用户名和密码,返回
        return new org.springframework.security.core.userdetails.User(users.getUsername(),
                new BCryptPasswordEncoder().encode(users.getPassword()),auths);
    }
}

 

5、配置数据源
server.port=8111

#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mp?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
6、编写controller类
package org.apache.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("hello")
    public String hello() {
        return "hello security";
    }

}

启动主程序

9、debug测试效果

当debug启动后,访问:http://localhost:8111/test/hello,进入web页面

 

 

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/274028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号