java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot登录功能实现

springboot实现登录功能的完整步骤

作者:大盘鸡加面

这篇文章主要给大家介绍了关于springboot实现登录功能的完整步骤,在web应用程序中,用户登录权限验证是非常重要的一个步骤,文中通过代码以及图文介绍的非常详细,需要的朋友可以参考下

springboot实现登录功能

springboot实现登录功能需完成以下步骤:

springboot启动类

使用idea创建的springboot项目,会自动生成启动类,有 @SpringBootApplication 注解的类就是启动类

springboot使用maven

springboot生成后在会生成pom.xml,在 pom.xml 写对应的包名、版本、下载链接,点击idea右上角的刷新按钮就可以自动下载,但是包下载的路径是在哪里呢?

这就需要修改一下idea的maven设置了,

File >> setting >> 搜索maven

页面有三个设置需要修改:

注意:包的下载路径尽量放在repository目录(自己手动创建该目录)下,不然可能会报错,找不到对应的包

配置resources目录下的application.yaml文件

application.yaml 是springboot的配置文件,yaml类型需使用key: value方式, 后面一定要跟空格分隔。使用登录只需要设置数据库和端口号

server:
  port: 8081
spring:
  datasource:
    username: root
    password: 123
    url: jdbc:mysql://localhost:3306/exam?serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver

port是sprongboot启动后的访问端口

username是数据库的登录用户名

password是登录密码

url数据库访问地址,jdbc:mysql://localhost:3306可直接复制,exam是我的数据库名字,serverTimezone=Asia/Shanghai设置时区,不设置有时会报错,driver-class-name是mysql驱动,MySQL版本以上使用com.mysql.cj.jdbc.Driver,mysql5及以下使用 com.mysql.jdbc.Driver。

编写数据库entity实体层、service业务层

springboot在maven中配置mybatis-plus依赖

 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.4.1</version>
 </dependency>

entity实体层为数据库添加字段映射service业务层包含数据库的常用操作

实体层

实体类主要是为了方便在java代码中使用数据库字段,实现java属性与数据库字段的一一映射。

在springboot启动类同级目录下新建一个entity目录,entity目录下新建一个Entity类

使用lombok依赖可以减少代码开发量,lombok会生成get、set方法

@data注解:生成所有属性的get、set方法

@AllArgsConstructor:生成该类下全部属性的构造方法

NoArgsConstructor:生成无参的构造方法

服务层service

服务层可以实现数据库常用操作:增删改查,这些命令都已写好,可以直接使用,减少大家开发量。

在springboot启动类同级目录下新建一个service目录,service目录下新建一个EmployeeService接口,该接口继承mybatisplus的IService接口

public interface EmployeeService extends IService<Employee> {
}

然后在EmployeeService同级目录下新建一个impl目录,该目录下新建EmployeeImplService类,@Service标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}

EmployeeServiceImpl 继承mybatisplus的 ServiceImpl 再实现刚才的 EmployeeService 接口。到现在为止,数据库相关配置已经做好了

实现公共函数result

web应用中,后端和前端交互,返回值包含:数据、返回码、消息

这些事每次交互都会返回的,既然每次访问都需要返回,那这个功能可以提取出来,作为一个公共类Result

在启动类同级目录下创建common目录,在该目录下创建Result类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
    private Integer code;
    private String msg;
    private T data;
    private Map map = new HashMap();
    public static <T> Result<T> success(T data){
        Result<T> result = new Result<>();
        result.data = data;
        result.code = 1;
        return result;
    }
    public static <T> Result<T> error(String msg){
        Result<T> result = new Result<>();
        result.msg = msg;
        result.code = 0;
        return result;
    }
}

定义了success、error两个方法,一个是访问成功的返回、一个是访问失败的返回。

编写controller控制层

最后一步,编写controller层,该层实现路由控制以及具体的功能

在启动类同级目录下创建controller目录,该目录下创建EmployeeController类

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    /**
     * 员工登录
     * @param request
     * @param employee
     * @return
     */
    @PostMapping("/login")
    public Result<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
        //1、讲页面提交的密码进行md5加密
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        //2、根据用户名查数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername, employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);
        //3、没有查询到结果则返回登录失败
        if(emp ==null){
            return Result.error("登陆失败");
        }
        if (!emp.getPassword().equals(password)) {
            return Result.error("登录失败");
        }
        if (emp.getStatus() == 0) {
            return Result.error("该用户已被禁用");
        }
        //存个Session,只存个id就行了
        request.getSession().setAttribute("employee",emp.getId());
        return Result.success(emp);
    }

@Slf4j是日志注解,使用该注解之后,在类中可以直接使用log方法生成日志

@RestController注解是Spring MVC中的一个组件,用于将Java类标记为处理RESTful请求的控制器

@RequestMapping("/employee")注解使得该类所有的控制器方法映射的请求前面都加上/employee

EmployeeController 类中先声明了employeeService,用于使用数据库的增删改查

@PostMapping("/login")注解代表网页访问/login时,会使用当前方法,且使用的是POST方式访问。

然后就是具体的login方法,这里实现了

###启动

运行springboot启动类,在终端显示下列信息则成功:

在浏览器访问: http://localhost:8081/employee/login

总结

到此这篇关于springboot实现登录功能的文章就介绍到这了,更多相关springboot登录功能实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文