Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目

本文详细介绍了使用Java Spring Boot和Vue.js开发一个前后端分离的博客项目的过程,包括Shiro整合JWT身份验证、异常处理、实体校验、跨域配置、登录接口开发以及博客接口开发等关键步骤。还提到了前端页面开发,如Vue、Element-UI、Axios等技术的应用。最后提供了项目代码和视频的获取方式。
摘要由CSDN通过智能技术生成

JwtFilter

第五步:定义jwt的过滤器JwtFilter。

这个过滤器是我们的重点,这里我们继承的是Shiro内置的AuthenticatingFilter,一个可以内置了可以自动登录方法的的过滤器,有些同学继承

BasicHttpAuthenticationFilter也是可以的。

我们需要重写几个方法:

  1. createToken:实现登录,我们需要生成我们自定义支持的JwtToken

  2. onAccessDenied:拦截校验,当头部没有Authorization时候,我们直接通过,不需要自动登录;当带有的时候,首先我们校验jwt的有效性,没问题我们就直接执行executeLogin方法实现自动登录

  3. onLoginFailure:登录异常时候进入的方法,我们直接把异常信息封装然后抛出

  4. preHandle:拦截器的前置拦截,因为我们是前后端分析项目,项目中除了需要跨域全局配置之外,我们在拦截器中也需要提供跨域支持。这样,拦截器才不会在进入Controller之前就被限制了。

下面我们看看总体的代码:

  • com.markerhub.shiro.JwtFilter

Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目

那么到这里,我们的shiro就已经完成整合进来了,并且使用了jwt进行身份校验。

5、异常处理

======

有时候不可避免服务器报错的情况,如果不配置异常处理机制,就会默认返回tomcat或者nginx的5XX页面,对普通用户来说,不太友好,用户也不懂什么情况。这时候需要我们程序员设计返回一个友好简单的格式给前端。

处理办法如下:通过使用@ControllerAdvice来进行统一异常处理,@ExceptionHandler(value = RuntimeException.class)来指定捕获的Exception各个类型异常 ,这个异常的处理,是全局的,所有类似的异常,都会跑到这个地方处理。

  • com.markerhub.common.exception.GlobalExceptionHandler

步骤二、定义全局异常处理,@ControllerAdvice表示定义全局控制器异常处理,@ExceptionHandler表示针对性异常处理,可对每种异常针对性处理。

Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目

上面我们捕捉了几个异常:

  • ShiroException:shiro抛出的异常,比如没有权限,用户登录异常

  • IllegalArgumentException:处理Assert的异常

  • MethodArgumentNotValidException:处理实体校验的异常

  • RuntimeException:捕捉其他异常

6、实体校验

======

当我们表单数据提交的时候,前端的校验我们可以使用一些类似于jQuery Validate等js插件实现,而后端我们可以使用Hibernate validatior来做校验。

我们使用springboot框架作为基础,那么就已经自动集成了Hibernate validatior。

那么用起来啥样子的呢?

第一步:首先在实体的属性上添加对应的校验规则,比如:

Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目

第二步 :这里我们使用@Validated注解方式,如果实体不符合要求,系统会抛出异常,那么我们的异常处理中就捕获到

MethodArgumentNotValidException。

  • com.markerhub.controller.UserController

Java大牛带你4小时开发一个SpringBoot+vue前后端分离博客项目

7、跨域问题

======

因为是前后端分析,所以跨域问题是避免不了的,我们直接在后台进行全局跨域处理:

  • com.markerhub.config.CorsConfig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值