前言

之前文章简单介绍了如何运行gin+vue的前后端分离开源项目,该项目是学习了Gin实践教程后结合vue-element-admin写的,该教程讲得很详细,适合入门Gin。本篇文章将介绍gin+vue的前后端分离开源项目中如何使用gin-jwt对API进行权限验证。

安装gin-jwt

在GOPATH目录下运行

go get github.com/appleboy/gin-jwt

初始化jwt中间件

gin-jwt已经帮我们封装成中间件了,我们只需要设置并实例化它就可以直接用了。

现在来看看项目中middleware/myjwt/gin_jwt.go文件:

总的就是调用jwt.New函数来实例化一个jwt.GinJWTMiddleware

然后我们看下jwt.GinJWTMiddleware中定义的属性和方法

  • TokenLookup:token检索模式,用于提取token,默认值为header:Authorization
  • SigningAlgorithm:签名算法,默认值为HS256
  • Timeout:token过期时间,默认值为time.Hour
  • TimeFunc:测试或服务器在其他时区可设置该属性,默认值为time.Now
  • TokenHeadName:token在请求头时的名称,默认值为Bearer
  • IdentityKey:身份验证的key值,默认值为identity
  • Realm:可以理解成该中间件的名称,用于展示,默认值为gin jwt
  • CookieName:Cookie名称,默认值为jwt
  • privKey:私钥
  • pubKey:公钥
  • Authenticator函数:根据登录信息对用户进行身份验证的回调函数
  • PayloadFunc函数:登录期间的回调的函数
  • IdentityHandler函数:解析并设置用户身份信息
  • Authorizator函数:接收用户信息并编写授权规则,本项目的API权限控制就是通过该函数编写授权规则的
  • Unauthorized函数:处理不进行授权的逻辑
  • LoginResponse函数:完成登录后返回的信息,用户可自定义返回数据,默认返回
{
"code": http.StatusOK,
"token": token,
"expire": expire.Format(time.RFC3339)
}
  • RefreshResponse函数:刷新token后返回的信息,用户可自定义返回数据,默认返回
{
"code": http.StatusOK,
"token": token,
"expire": expire.Format(time.RFC3339)
}

到这里我们应该就知道如何使用这个中间件了。

使用中间件

实例化中间件后,直接在路由组中使用该中间件就可以了

源码地址:https://github.com/Bingjian-Zhu/gin-vue

gin-jwt对API进行权限控制的更多相关文章

  1. 【SpringSecurity系列3】基于Spring Webflux集成SpringSecurity实现前后端分离无状态Rest API的权限控制

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/02-springsecurity-state ...

  2. 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

  3. CloudStack API访问权限控制

    在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置 ...

  4. 【netcore基础】MVC API接口权限控制Attribute

    效果: 通过Attribute来简单控制某个方法的访问权限 例如: 下面api只能角色id是[001,002,999]的登录用户才能访问 /// <summary> /// 管理用户列表 ...

  5. SpringBoot+Shiro+JWT前后端分离实现用户权限和接口权限控制

    1. 引入需要的依赖 我使用的是原生jwt的依赖包,在maven仓库中有好多衍生的jwt依赖包,可自己在maven仓库中选择,实现大同小异. <dependency> <groupI ...

  6. 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...

  7. 基于MVC4+EasyUI的Web开发框架形成之旅(7)--权限控制

    我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...

  8. kubernetes API Server 权限管理实践

    API Server权限控制方式介绍 API Server权限控制分为三种:Authentication(身份认证).Authorization(授权).AdmissionControl(准入控制). ...

  9. (转)基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    http://www.cnblogs.com/wuhuacong/p/3361351.html 我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大 ...

随机推荐

  1. Linux平台 Oracle 19c RAC安装Part1:准备工作

    一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二.安装前期准备工作 2.1 各节点系统时间校对 2.2 各节点关闭防火墙和 ...

  2. 【Java】Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no statement named *** in this SqlMap.

    如题: 可能原因: 在xxx.xml文件中有两个标签的id命名相同: DAO实现类方法中没有写对应xxx.xml的id名称: 实体映射文件xxx.xml未加入到sqlMap-Config.xml文件中 ...

  3. 接口测试时遇到 java 代码加密请求数据,用 python 的我该怎么办?

    前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公司的产品都是java语言实现的.所以加密处理也是java实 ...

  4. hdoj 4712 Hamming Distance(靠人品过的)

    我先解释一下汉明距离  以下来自百度百科 在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的字符不同的个数.换句话说,它就是将 一个字符串变换成另外一个字符串所需要替换的字符个数. 例如: ...

  5. JVM调优之经验

    在生产系统中,高吞吐和低延迟一直都是JVM调优的最终目标,但这两者恰恰又是相悖的,鱼和熊掌不可兼得,所以在调优之前要清楚舍谁而取谁.一般计算任务和组件服务会偏向高吞吐,而web展示则偏向低延迟才会带来 ...

  6. 洛谷 P2657 [SCOI2009]windy数

    题意简述 求l~r之间不含前导零且相邻两个数字之差至少为2的正整数的个数 题解思路 数位DP 代码 #include <cstdio> #include <cstring> # ...

  7. lxml解析网页

    目录 1. 什么是lxml 2. 初次使用 3. xpath 3.2 标签定位 3.3 序列定位 3.4 轴定位 4. 实例 1. 什么是lxml lxml是干什么的?简单的说来,lxml是帮助我们解 ...

  8. ZooKeeper系列(三)—— Zookeeper 常用 Shell 命令

    一.节点增删改查 1.1 启动服务和连接服务 # 启动服务 bin/zkServer.sh start #连接服务 不指定服务地址则默认连接到localhost:2181 zkCli.sh -serv ...

  9. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  10. 偏差和方差以及偏差方差权衡(Bias Variance Trade off)

    当我们在机器学习领域进行模型训练时,出现的误差是如何分类的? 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是 ...