Springboot + Vue + shiro 实现前后端分离、权限控制

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

本文总结自实习中对项目的重构。原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分离的想法,由于之前,没有接触过,主要参考的还是网上的一些博客教程等,初步完成了前后端分离,在此记录以备查阅。

一、前后端分离思想

前端从后端剥离,形成一个前端工程,前端只利用Json来和后端进行交互,后端不返回页面,只返回Json数据。前后端之间完全通过public API约定。

二、后端 Springboot

Springboot就不再赘述了,Controller层返回Json数据。

@RequestMapping(value = "/add", method = RequestMethod.POST)
    @ResponseBody
    public JSONResult addClient(@RequestBody String param) {
        JSONObject jsonObject = JSON.parseObject(param);
        String task = jsonObject.getString("task");
        List<Object> list = jsonObject.getJSONArray("attributes");
        List<String> attrList = new LinkedList(list);
        Client client = JSON.parseObject(jsonObject.getJSONObject("client").toJSONString(),new TypeReference<Client>(){});
        clientService.addClient(client, task, attrList);
        return JSONResult.ok();
    }

Post请求使用@RequestBody参数接收。

三、前端 Vue + ElementUI + Vue router + Vuex + axios + webpack

主要参考:

https://cn.vuejs.org/v2/guide/
https://github.com/PanJiaChen/vue-admin-template/blob/master/README-zh.md
https://github.com/PanJiaChen/vue-element-admin

这里主要说一下开发工程中遇到的问题:

1.跨域

由于开发中前端工程使用webpack启了一个服务,所以前后端并不在一个端口下,必然涉及到跨域:

XMLHttpRequest会遵守同源策略(same-origin policy). 也即脚本只能访问相同协议/相同主机名/相同端口的资源, 如果要突破这个限制, 那就是所谓的跨域, 此时需要遵守CORS(Cross-Origin Resource Sharing)机制。

解决跨域分两种:

1、server端是自己开发的,这样可以在在后端增加一个拦截器

@Component
public class CommonIntercepter implements HandlerInterceptor {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        //允许跨域,不能放在postHandle内
        response.setHeader("Access-Control-Allow-Origin", "*");
        if (request.getMethod().equals("OPTIONS")) {
            response.addHeader("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,PATCH");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
        }
        return true;
    }
}

response.setHeader("Access-Control-Allow-Origin", "*");

主要就是在Response Header中增加 "Access-Control-Allow-Origin: *"

if (request.getMethod().equals("OPTIONS")) {
            response.addHeader("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,PATCH");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
        }

由于我们在前后端分离中集成了shiro,因此需要在headers中自定义一个'Authorization'字段,此时普通的GET、POST等请求会变成preflighted request,即在GET、POST请求之前会预先发一个OPTIONS请求,这个后面

springboot+shiro前后端分离实现!! 本文章参考两位大佬写的博客完成的 https://blog.csdn.net/weixin_42236404/article/details/89319359 https://blog.csdn.net/qq_42109746/article/details/97102231 1、前言 1.1、唠嗑部分 学习shiro之前,建议先学习springsecurity,将两个框架进行对比的方式学习,会有更加深的印象。我之前写过一篇关于springsecurity的博客,你可以参考参考,个人感觉挺详细. 阅读详情

相关推荐

Springboot+Shiro+Vue博客管理系统

Springboot+vue博客管理系统 项目是前后端分离的一个项目,文章总体分为java后端接口和vue前端页面。 Java后端接口 1.前言 编译器使用的IDEA2021,一开始先创建新的项目骨架,直接选择Spring Initializr创建。数据层一开始学习springboot的时候用的mybatis,易上手也很方便,但是编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此,所以用的mybatis-plus(https://baomidou.com/guide/),为简化而生只…,启动自

weixin_45670060的博客 2599

vueshiro结合实现权限按钮

vue+shiro实现前端细颗粒按钮级权限,并且可以实现删除和禁用两种不同模式,里面需要的前置技术包括 :vue\vue的自定义指令\vue的自定义插件\vuex

Springboot+Vue+shiro实现前后端分离权限控制

原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分离的想法,由于之前,没有接触过,主要参考的还是网上的一些博客教程等,初步完成了前后端分离,在此记录以备查阅。 一、前后端分离思想 前端从后端剥离,形成一个前端工程,前端只利用Json来...

u010637366的博客 2300

Springboot+Vue+Shiro+ElementUI前后端分离权限快速上手项目实战开发

适用人群Java开发人员,Vue开发人员,前后端分离开发人员,权限管理和配置开发人员课程概述【讲师介绍】讲师职称:              现某知名大型互联网公司资深架构师,技术总监,职业规划师,首席面试官,曾在某上市培训机构,高校任教多年。            Array(Array老师)10多年互联网公司实战经验,知名的大型互联网公司的架构师,高管等职,在企业长期从事于技术的源码阅读和新技术的研究;擅长于职业规划,面试辅导,从事面试官多年;擅长于JAVA,人工智能AI应用,Xmind等等,曾服役于国内某上市培训机构数年,独特的培训思路,培训体系,培训方式,实践的职场技能,职场现状,职场晋升等让你快速适应企业职场的所需。 【课程介绍】技术选型开发环境:Eclipse/Idea ,JDK 1.8以上 后端技术核心框架:SpringBoot2.x框架系列(同样适用Springcloud F版本以后的版本),如下(节选):    持久层框架:MyBatis 3.x + Mybatis-plus 3.x日志管理:SLF4J 1.7 + Log4j2 2.7工具类:Apache Commons、Jackson 、fastjson、Gson权限验证前端技术  Vue  Vue-cliElementUI ---https://element.eleme.io/JSX (JavaScript Xml)前台的权限验证和路由设置开发模式       前后端分离的开发数据库       Mysql5IDE    Intellij Idea

Shiro自定义登录页面配置,Shiro默认登录页面

================================ ©Copyright 蕃薯耀 2022-04-06 蕃薯耀的博客_CSDN博客 一、Shiro默认登录页面 Shiro默认登录页面是根路径的jsp页面: /login.jsp 二、Shiro自定义登录页面 方式一:application.properties配置 在application.properties文件配置shiro.loginUrl shiro.loginUrl=/login 方式二:在..

蕃薯耀的博客 3986

springboot接收json参数_Spring Boot + Vue + Shiro 实现前后端分离权限控制

一、前后端分离思想二、后端 Springboot三、前端 Vue + ElementUI + Vue router + Vuex + axios + webpack四、前后端分离项目中集成shiro五、部署项目《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《...

weixin_39963523的博客 158

apache shiro怎么升级_Springboot + Vue + shiro 实现前后端分离权限控制

本文总结自实习中对项目对重构。原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分离的想法,由于之前比没有接触过,主要参考的还是网上的一些博客教程等,初步完成了前后端分离,在此记录必备查阅。一、前后端分离思想前端从后端剥离,形成一个前端工程,前端只利用...

weixin_39533742的博客 314

Spring Boot + Vue + Shiro 实现前后端分离权限控制

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com 来源:http://sina.lt/gauR 一、前后端分离思想 二、后端 Springboot 三、前端 Vue + ElementUI + Vue router + Vuex + axios + webpack 四、前后端分离项目中集成 shiro 五、部署项目 本文总结自实习中对项目的重构。原先项目采用 Springboot+freemarker 模版,开发过程中觉得前端逻辑写的实在恶心.

嘻哈熊的专栏 1385
上一篇: 你真的熟悉堆排序吗?
下一篇: FastJson 比较
K'illCode
博客等级 码龄9年 763粉丝 838原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值