前言

之前文章简单介绍了如何运行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. java练习---14

    abstract class A{ private String name; public A(String name) { this.name = name; } public String get ...

  2. idea新建javaweb工程

    最近尝试了idea的使用,将idea建立javaweb工程的步骤记录下来 1.方框里边是重点 2.next后输入工程文件名点击finish 3.如图看到项目文件夹里边没有WEB-INF文件夹及里边的w ...

  3. MYSQL A、B表数组关联查询

    最终结果: 数据库表 A表: B表: 操作步骤 主要关键字:FIND_IN_SET.GROUP_CONCAT.LEFT JOIN.GROUP BY 第一步:left join 连接AB表并通过 fin ...

  4. python模块知识二 random -- 随机模块、序列化 、os模块、sys -- 系统模块

    4.random -- 随机模块 a-z:97 ~ 122 A-Z :65 ~ 90 import random #浮点数 print(random.random())#0~1,不可指定 print( ...

  5. 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这

    优化一览图 优化 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCRIB ...

  6. 【Android】Theme.AppCompat.Light 问题

    Android 开发的 styles.xml 文件中遇到了这个问题: <style name="AppBaseTheme" parent="Theme.AppCom ...

  7. 如何使用Arrays工具类操作数组

    介绍 我们要先知道Arrays 是什么. java.util.Arrays 类是 JDK 提供的一个工具类主要用来操作数组,比如数组的复制转换等各种方法,Arrays 的方法都是静态方法可以通过Arr ...

  8. ThreadLocal为什么会内存泄漏

    1.首先看下ThreadLocal的原理图: 在ThreadLocal的生命周期中,都存在这些引用. 其中,实线代表强引用,虚线代表弱引用: 2.ThreadLocal的实现:每个Thread维护一个 ...

  9. eclipse解决properties文件中文乱码(两种方试)

    第一种:大多数网上搜到的情况(不靠谱) 第一步:windows-->properties-->General-->Content Types-->text(如下图) 第二步:p ...

  10. 在Vue 中使用Typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...