Spring Security+JWT+Vue 集成及权限认证(三)

简介: Spring Security+JWT+Vue 集成及权限认证(三)

index.js 内容

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import BlogLogin from '@/views/BlogLogin.vue'
import BlogIndex from '@/views/BlogIndex.vue'
Vue.use(Router)
export default new Router({
  routes: [
    {
      path: '/',
      name: 'login',
     component: BlogLogin
    },
    {
      path: '/index',
      name: 'BlogIndex',
      component: BlogIndex
    },
    {
      path: '/login',
      name: 'login',
      component: BlogLogin
    }
  ]
})

前后端交互流程

使用 localhost:8080/login 访问登录页

index.vue

<template>
<div>
    <blog-header></blog-header>
    <hr/>
    <div>
      这是首页,嘻嘻嘻。
      <button v-on:click="targeAdmin">我是管理员</button>
      <button v-on:click="targeUser">我是用户</button>
    </div>
    <div>
      <textarea v-model="msg" cols="50" rows="20"></textarea>
    </div>
    <hr/>
    <blog-footer></blog-footer>
  </div>
</template>
<script>
import blogHeader from '@/views/BlogHeader.vue'
import blogFooter from '@/views/BlogFooter.vue'
export default {
  name: 'BlogIndex',
  // blogHeader/blogFooter组件给申明到components里面然后在template里面使用
  components: { blogHeader, blogFooter },
  data(){
    return {
      msg:''
    }
  },
  methods:{
    targeAdmin () {//该方法需要ROLE_ADMIN角色 和 admin:adminRoleList 权限标识才能访问 
      this.msg=''
      this.$axios
        .get('/admin/adminRoleList').then(res => {
          this.msg= JSON.stringify(res.data)
           console.log(res.data.title)
        })
        .catch(failResponse => {})
    },
    targeUser(){//该方法需要ROLE_USER角色 和 user:info权限标识才能访问
      this.msg=''
      this.$axios.get("/user/info").then(res => {
         this.msg= JSON.stringify(res.data)
         console.log(res.data.title)
      })
      .catch(failResponse => {})
    }
  }
}
</script>

管理员请求交互

输入账号:admin,密码:123456 登录成功,cookie 也设置进去了 接下来可以请求接口了

补充上一个重要的配置!

//引用axios,并设置基础URL为后端服务api地址
var axios=require('axios')
//前缀必须加上的请求接口地址 
axios.defaults.baseURL='http://127.0.0.1:8764'
//将API方法 绑定到全局
Vue.prototype.$axios=axios

流程如下:

请求后端接口 token 带上了

后端拦截到了,并知道当前的用户具有 ROLE_ADMINROLE_USER 角色,则放权通过

请求接口带有权限标识的我们对应的权限认证 handler 也拦截到了

普通用户请求交互

换个用户登录,账号:user,密码:123456,当前用户是没有接口权限标识 sys:role:info 的权限,不会放过权限认证,到达我们的未权限认证 handler:

总结

本次 Vue 之旅比较简单,只是简单的授权与权限认证、不认证(都给予对应的信息)至于全局拦截 code 后面再补上

SpringBoot 后端跨域支持「由于前端与后端端口不同,会导致前后端联调时出现跨域问题」,代码补上

@Configuration
public class CorsConfig {
    public CorsConfig() {
    }
    @Bean
    public CorsFilter corsFilter() {
        // 1. 添加cors配置信息
        CorsConfiguration config = new CorsConfiguration();
//        config.addAllowedOrigin("http://localhost:8080");
        config.addAllowedOrigin("*");
        // 设置是否发送cookie信息
        config.setAllowCredentials(true);
        // 设置允许请求的方式
        config.addAllowedMethod("*");
        // 设置允许的header
        config.addAllowedHeader("*");
        // 2. 为url添加映射路径
        UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
        corsSource.registerCorsConfiguration("/**", config);
        // 3. 返回重新定义好的corsSource
        return new CorsFilter(corsSource);
    }
}

后端源码如下:https://github.com/vnjohn/springBoot-security

前端源码如下:https://github.com/vnjohn/security-vue

更多技术文章:vnjohn 博客



目录
相关文章
|
2月前
|
JSON 安全 算法
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
3天前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
29 5
|
2月前
|
存储 安全 Java
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
116 1
|
26天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
36 0
|
2月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
321 11
|
3月前
|
安全 Java 数据安全/隐私保护
|
2月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
105 0
|
4月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
60 0