gin-jwt对API进行权限控制

前言

之前文章简单介绍了如何运行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)
}

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

使用中间件

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

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

转载于:https://www.cnblogs.com/FireworksEasyCool/p/11455834.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Michael Brostein 最新几何深度学习综述:超越 WL 和原始消息传递的 GNN

来源:前沿科技编译:OGAI编辑:陈彩娴如何突破基于 WL 测试和消息传递机制的 GNN 的性能瓶颈?且看几何深度学习旗手、牛津大学教授 Michael Brostein 如是说。图可以方便地抽象关系和交互的复杂系统。社交网络、高能物理、化学等研究…

day45-前端CSS

1.0 CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。 2.0 CSS语法 2.1 CSS实例 每个CSS样式由两个组成部分&#xff1…

人工智能克服了类脑硬件的绊脚石

来源:ScienceAI编辑:萝卜皮当今最成功的人工智能算法——人工神经网络,松散地基于我们大脑中复杂的真实神经网络网络。但与我们高效的大脑不同,在计算机上运行这些算法会消耗巨大的能量:最大的模型在其生命周期中消耗的…

图灵奖起源

来源 : 图灵人工智能在计算机科学的世界里,也有很多带来了全球变革的超级英雄。他们都曾经辉煌一时,但逐渐被公众遗忘。于是我们想做一件事情,用直观的动漫方式,带大家认识计算机宇宙中的那些超级英雄。故事&#xff0…

吵翻了!AI 顶会设置媒体静默期,作者不信邪提前宣传被拒稿,加强盲审是促进公平还是阻止了学术交流?...

来源:AEIC学术交流中心3月2日,计算机视觉三大顶会之一的CVPR2022论文接收结果公布,在经历了漫长的社交媒体静默期后,社交媒体被论文作者刷屏了,部分作者还展示了自己的论文成果。1CVPR2022论文接收结果作为人工智能领域…

巨头们的先进封装技术解读

来源 : 图灵人工智能在上《先进封装最强科普》中,我们对市场上的先进封装需求进行了一些讨论。但其实具体到各个厂商,无论是英特尔(EMIB、Foveros、Foveros Omni、Foveros Direct)、台积电(InFO-OS、InFO-L…

猜测未来微服务架构

微服务架构 微服务的概念在2014年3月由Martin Fowler首次提出。 微服务架构解决的核心问题及其相应的开源组件如下所示: RPC框架 (Service-to-service calls) Spring Boot/Spring MVCDubbogRPCthrift服务注册和发现 (Service registration and discovery) 注册中心 …

联邦学习怎样应用在推荐系统中?

来源:知乎丨羊老头说起联邦学习,大家再熟悉不过了,由于其能在数据不移动的前提下协同训练一个全局共享的模型,迅速成为了人工智能安全领域的一个研究热点。推荐系统作为人工智能领域最振奋人心的应用之一,与联邦学习相…

红帽、Docker、SUSE 在俄罗斯停服

出品:CSDN(ID:CSDNnews)整理:苏宓继 Oracle、Google、苹果等科技公司和 React 开源项目之后,如今 Linux 发行版也牵扯进俄乌之间冲突的漩涡中。其中一个是全球最大的独立开源软件公司 SUSE,一个…

spring boot 配置动态刷新

本文测试使用的spring cloud版本为: Dalston.SR1 很多朋友只知道spring cloud config可以刷新远程git的配置到内存中, 却不知道spring cloud config的客户端可以脱离服务端使用, 更不知道spring cloud config客户端结合actuator还可以刷新本地…

深度学习撞墙了

来源:机器之心早在 2016 年,Hinton 就说过,我们不用再培养放射科医生了。如今几年过去,AI 并没有取代任何一位放射科医生。问题出在哪儿?近年来,AI 在大数据、大模型的深度学习之路上一路狂奔,但…

Transformer 会接管人工智能?

来源:ScienceAI编辑:绿萝想象一下,你去当地的五金店,在货架上看到一种新的锤子。你听说过这把锤子:它比其他锤子敲得更快、更准确,在过去的几年里,它已经淘汰了许多其他锤子,至少在大…

Nat. Commun.速递:合群者有着相似的大脑活动

来源:集智俱乐部作者:郭瑞东 作者:梁金编辑:邓一雪摘要Convergent processing of the world may be a factor that contributes to social connectedness. We use neuroimaging and network analysis to investigate the associat…

桌面推演技术前沿及发展趋势

来源:蓝海长青智库作者:吕欣、蔡梦思、陈彬,国防科技大学系统工程学院摘要桌面推演通过模拟事件场景及处置过程来提高参演人员的风险感知能力、信息研判能力、指挥决策能力和协同配合能力,被广泛应用于军事作战、应急管理和教育培…

清华大学孙茂松:自然语言处理一瞥,知往鉴今瞻未来

来源:中国人工智能学会作者:孙茂松近日,清华大学人工智能研究院常务副院长孙茂松教授亲手执笔,对自然语言处理的贡献、当前境界与未来挑战进行了深入的探讨。AI科技评论编辑组深有同感,认为此文十分值得一读&#xff0…

前端基础之jQuery

jQuery jQuery的思想,实际上很简单,八个字可以概括:选取元素,对其操作。 元素选取的表达式遵循 CSS 以及 XPath 的标准。选取结果可以是一个或多个,后面的操作针对所有被选取的元素。多个连续的操作可以用“链式”实现…

美国自动驾驶监管里程碑:新法规允许自动驾驶汽车取消方向盘

来源:AI前线编译:刘燕NHTSA 表示,这一新规迈出了“历史性”的一步,确保为配备自动驾驶系统的车辆的乘客保持同样高水平的乘员碰撞保护。这可以视为美国自动驾驶监管的一个里程碑。InfoQ 3 月 11 日消息,根据路透社的报…

DataTable实现分组

有时候我们从数据库中查询出来数据之后,需要按照DataTable的某列进行分组,可以使用下面的方法实现,代码如下: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using…

城市大脑的定义与理论基础综述

本文发表于2022年2月下旬的《中国建设信息化》,作者杜青峰 刘锋 任伟阳1 前言2015以来,城市大脑的概念和定义首次提出后。随着城市大脑领域在理论研究和产业实践上的探索和进展,城市大脑已经成为前沿科技领域和智慧城市建设领域的新热点,到2022年&…

线程实现模型

线程实现模型 线程实现模型主要分为:用户级线程模型,内核级线程模型和两级线程模型。他们的区别在于线程与内核线程之间的对应关系。 以下我们将分析这三种线程实现模型的特点: 用户级线程模型 (1)多对一关系 用户级线…