token验证失败

学习 Antd Pro 前后端分离

你说的曾经没有我的故事 提交于 2019-12-02 08:52:10
1.前言 最近学习reactjs ,前些年用RN开发过移动端,入门还算轻松。现在打算使用 Antd Pro 实现前后端分离。要使用Antd Pro这个脚手架,必须熟悉 umi、dva、redux-saga 等相关知识。 基础知识及目录结构可以先看官方文档 : https://pro.ant.design/docs/getting-started-cn 官方介绍: Ant Design Pro 是一个企业级中后台前端/设计解决方案,我们秉承 [Ant Design](http://ant.design/) 的设计价值观,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。 2. 网络请求库添加钩子 钩子的目的主要是对请求头设置(如:添加 token,api服务端通过token鉴权,当然您的token格式也可以是jwt,我这里是自己加密后的字符串)和对请求返回的数据实现拦截过滤特殊处理。 antd pro 使用的是 umi-request.js 这个库,其实也是基于 fetch 封装 。 一开始用axios替换了request.js里面。后来发现umi-request 也很容添加钩子,这里在umi-request上添加。 添加拦截钩子 : 提交请求格式(根据你的api服务选择):

彻底理解cookie,session,token

北战南征 提交于 2019-12-02 05:12:02
彻底理解cookie,session,token 发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮 2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了 3、这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id ! 如果访问服务器多了, 就得由成千上万,甚至几十万个。 这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办? 机器B可没有小F的

什么是token及怎样生成token

烈酒焚心 提交于 2019-12-02 03:28:22
什么是token?   token是 服务端 生成的一串字符串,以作客户端进行请求的令牌, 当第一次登陆后,服务器生成一个token便将此token返回给客户端,以后客户端只要带上这个token前来请求数据即可 ,无需再次带上用户名和密码   基于token的身份验证   使用基于token的身份验证方法,在服务端不需要存储用户的登录记录.流程是这样的: 客户端使用用户名跟密码去请求登录,服务度段收到请求,去验证用户名和密码,验证成功后,服务端会 签发 一个token,再把这个token发送给客户端,客户顿收到token以后可以把它存储起来,比如放在cookie里面或者local storage里面,客户端每次向服务端请求资源的时候需要带上服务端签发的token,服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,以某种方式比如随机生成32位的字符串作为token,存储在服务器中,并返回token到APP,以后APP请求时,凡是需要验证的地方都要带上该token,然后服务端验证token,成功返回所需要的结果,失败返回错误信息, 重新登录,服务器上的token设置一个有效期,每次APP请求时都要验证token和有效期. token的优势:   1.无状态.可扩展   在客户端存储的token是无状态的,并且能被扩展的.基于这种无状态和不存储session信息

nodeJS微信JSDK 配置

谁说我不能喝 提交于 2019-12-02 01:59:15
nodeJS微信JSDK 配置 一、微信公众平台申请一个测试公众号 二、配置nodeJS 使用express框架搭建服务器 微信生成签名步骤: 1.获取token 2.通过token,获取jsapi_ticket 3.生成随机字符串,获取当前时间戳 4.排序拼接生成签名 在routes---->index.js var express = require('express'); var router = express.Router(); var axios = require('axios'); var sha1 = require('sha1'); var fs = require('fs'); let accessTokenJson = require('../user_token'); const APP_ID = 'wx47159511d53720fb' const APP_SECRET = 'e8be2675730af8b743769e34fc8a7267' let config_nonceStr = '' //随机字符串 let config_timestamp = '' //时间戳 /* GET home page. */ router.get('/', function(req, res, next) { res.send('这是首页') }); router

Laravel5.5使用jwt完成token认证

核能气质少年 提交于 2019-12-01 23:35:59
参考网址: https://segmentfault.com/a/1190000012606246#articleHeader0 安装 jwt-auth 最新版本是 1.0.0 rc.1 版本,已经支持了 Laravel 5.5 。如果你使用的是 Laravel 5.5 版本,可以使用如下命令安装。根据评论区 @tradzero 兄弟的建议,如果你是 Laravel 5.5 以下版本,也推荐使用最新版本,RC.1 前的版本都存在多用户token认证的安全问题。 $ composer require tymon/jwt-auth 1.0.0-rc.1 配置 添加服务提供商 将下面这行添加至 config/app.php 文件 providers 数组中: app.php 'providers' => [ ... Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ] 发布配置文件 在你的 shell 中运行如下命令发布 jwt-auth 的配置文件: shell $ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" 此命令会在 config 目录下生成一个 jwt.php 配置文件

JSON Web Token(JWT)

梦想的初衷 提交于 2019-12-01 23:29:57
一.什么是JSON Web Token:   首先要明确的是JSON Web Token:是一个开放标准,这个标准定义了一种用于简洁,自包含的用于通信双方之间以JSON对象的形式安全传递信息的方法   而我们在项目中使用的JWT Token就是通过一定规范生成token,常用于单体应用或者微服务应用下的登录校验解决方法   那么问题来了,现有的登录校验方案,有Cookie和Seesion这些会话技术,那么为什么还需要JSON,Web Token呢,下面就这些问题来说明 二,JSON Web Token的组成   JWT由三个部分组成:     1.JWT头部 header       -header部分用于描述JWT元数据的JSON对象,主要是用来哦描述签名部分所使用的算法     2.JWT负载 payload       -负载部分主要描述了加密对象的信息,如用户的id等等,也可以加写规范里面的东西,例如expire过期时间,iss签发者,sub面羡慕的用户等等     3.JWT签名 signature       -签名部分主要是讲前面的header部分和payload部分两部分进行加密,常用的是单向加密(也就是摘要算法,例如MD5,SHA等等,这些加解密算法,请阅读我另一篇博客)       主要目的是为了防止别人那道token进行base解密后篡改token

理解session,cookie和token

此生再无相见时 提交于 2019-12-01 22:07:34
发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮 但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了 这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id ! 如果访问服务器多了, 就得由成千上万,甚至几十万个。 这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办? 机器B可没有小F的 session id啊。 有时候会采用一点小伎俩:

登录篇

北战南征 提交于 2019-11-30 19:33:58
//click事件触发登录this.$store.dispatch('LoginByUsername', this.loginForm).then(() => { this.$router.push({ path: '/' }); //登录成功之后重定向到首页 }).catch(err => { this.$message.error(err); //登录失败提示错误 }); 随便找一个空白页面撸上两个input的框,一个是登录账号,一个是登录密码。再放置一个登录按钮。我们将登录按钮上绑上click事件,点击登录之后向服务端提交账号和密码进行验证。 这就是一个最简单的登录页面。如果你觉得还要写的更加完美点,你可以在向服务端提交之前对账号和密码做一次简单的校验。 action LoginByUsername({ commit }, userInfo) { const username = userInfo.username.trim() return new Promise((resolve, reject) => { loginByUsername(username, userInfo.password).then(response => { const data = response.data Cookies.set('Token', response.data.token) /

Spring Security 解析(七) —— Spring Security Oauth2 源码解析

时光总嘲笑我的痴心妄想 提交于 2019-11-30 12:21:29
Spring Security 解析(七) —— Spring Security Oauth2 源码解析   在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security 、Spring Security Oauth2 等权限、认证相关的内容、原理及设计学习并整理一遍。本系列文章就是在学习的过程中加强印象和理解所撰写的,如有侵权请告知。 项目环境: JDK1.8 Spring boot 2.x Spring Security 5.x   在解析Spring Security Oauth2 源码前,我们先看下 Spring Security Oauth2 官方文档 ,其中有这么一段描述: The provider role in OAuth 2.0 is actually split between Authorization Service and Resource Service, and while these sometimes reside in the same application, with Spring Security OAuth you have the option to split them across two applications, and also to have

sso单点登录系统

喜你入骨 提交于 2019-11-30 08:39:09
sso单点登录概念 1.一处登录,处处登录.会单独做一个单点登录系统,只负责颁发token和验证token,和页面登录功能. 2. 通过在浏览器 cookie 中放入 token ,和在 redis 中对应 token 放入用户信息的方式,代替 session 共享, 使用 jwt(json web token) 自定义一个携带用户信息 token 加密算法. 3.cookie 中的 token 是已经使用过的 token ,取名 oldToken . url 地址栏中的 token 新颁发的 token ,取名 newToken 做法: 1.首先自定义一个注解,作用在方法上.有3种状态: 1.1 如果为null,表示直接放行,例如商品详情页,用户可以不用登录直接访问. 1.2 如果为false,经常用在购物车方法上,表示可登录可不登录,用户不登录购物车数据保存cookie中,用户登录数据保存数据库并放redis一份. 1.3 如果为true,表示用户必须登录,例如购物车结算跳订单页面. @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LoginRequired {   boolean isNeededSuccess() default true; } 2