(html)前端如何验证token的合法性来判断用户是否登录?
问题: (html)前端如何验证token的合法性来判断用户是否登录?
描述:
1、我使用了JWT的方式,后端生成了一个token,将其返回给前端,前端获取到后每次请求接口都附带上这个token,后端来判断这个token是否合法,如果不合法,后端该如何让其重定向到登录页面?是前端根据后端返回的错误信息让前端重定向吗?
2、使用react-router之类的前端路由,我在切换路由的时候怎么判断用户是否已经登录了呢?毕竟有的页面不能让未登录的用户访问,如果没有登录,就在前端将其重定向到登录页面。这个是要在每次切换前端路由的时候向后端发送一个请求来验证吗?如果验证通过了才将页面切换过去。
3、或者还有没有什么更好也更安全的保持登录状态的方法呢?
解决方案1:
楼上说的都没错, 我也正在搞这个。 后端验证返回错误码, 前端判断是登录还是权限不足。
解决方案2:
1 token保存在前端 后端验证不通过返回错误码 由前端重定向
2 用react了肯定是个单页应用 你路由跳转不需要去验证 只要登录的时候验证了就可以了 后续的通过每个接口的权限验证来判断是否有页面权限
解决方案3:
正在用laravel jwt和vue写项目在,说下我的想法:
首先,前后端一定要有个约定,即返回的数据格式及如何处理错误。比如我们返回的json的数据格式(高级点还有http status响应机制)
{
"code": 0, // 0代表成功,1失败,2未登录....
"msg": "修改成功!"
"data":[]
}
前端每次请求路由之前做个响应(vue对应的是router.beforeEach方法,这里我不太了解react,但是你查下肯定有这个方法),先判断本地是否有存储用户的登录信息,无则直接返回登录页面(or其它业务页面),有则进行你的其它操作,这里已经回答第二个问题了,至于你说的部分页面才需要用户登录,也很简单,只需要对路由进行分组处理
登录之后,将后端返回的信息包装存储本地,比如token及用户信息,以备下次调用
这里回到你的第一个问题,当用户请求通过路由前的判断,也就是前端认为用户已登录用token去请求后端api的时候,后端返回token过期或者错误的时候怎么处理?这个时候返回的数据code=2,那么我们只需要在统一请求后端api接口的地方做个响应,当code=2,清空本地存储的用户数据,前端路由到登录页即可,这里不该后端去重定向了
第三个问题不好回答,安全是相对的,这个方式已经很安全了。设计的符合用户习惯,业务逻辑无问题就是我的目标
你的标题貌似有问题,token的合法性是后端去判断的,应该问前端如何根据后端对token验证的结果做出响应
(html)前端如何验证token的合法性来判断用户是否登录?的更多相关文章
- ajax来判断用户是否登录与添加
首先在用ajax之前,先说一下JSON: JSON:javascript object notation js对象标记 对于json,我们只需要知道如何定义json?如何输出?怎么遍历? 1.定义 ...
- spring登录验证拦截器和根据用户角色登录
大家都知道spring的用户登录拦截器,确实省去了程序员不少的精力,下面说说我在项目中使用的感受. 德安微信管理后台是管理多个微信帐号的平台,登录到平台的用户有三个角色,游客和微信帐号管理员.超级管理 ...
- Spring Cloud中Feign如何统一设置验证token
代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过 ...
- 在node中使用jwt签发与验证token
1.什么是token token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识. token是在服务端产生的.如果前端使用用户名和密码向服务端发送请求认证,服务端认证成功,那 ...
- ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35
下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验 ...
- 为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
为什么每个请求都要有用户名密码呢,那不是每次都要查询一下了,token,表示这个用户已经验证通过了,在token有效期内,只需要判断token是否有效就可以了
- JS验证身份证的合法性
//验证身份证的合法性 function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:&quo ...
- IOS开发中怎样验证邮箱的合法性
IOS开发中怎样验证邮箱的合法性 文章参考:http://www.codes51.com/article/detail_94157.html 代码: - (void)viewDidLoad { [su ...
- 基于ASP.NET Core Data Protection生成验证token
ASP.NET Core Data Protection 不仅提供了非对称加密能力,而且提供了灵活的秘钥存储方式以及一致的加解密接口(Protect与Unprotect).Session中用到了它,C ...
随机推荐
- 【分块】【树状数组】bzoj3787 Gty的文艺妹子序列
题解懒得自己写了,Orz一发wangxz神犇的: http://bakser.gitcafe.com/2014/12/04/bzoj3787-Gty%E7%9A%84%E6%96%87%E8%89%B ...
- kill -3 获取threaddump信息
有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在weblogic启动的时候,会将其标准输出重 定向到一个文件,用"nohup ./star ...
- css中width和height默认值
width和height默认都是auto自动伸缩的,但不同的标签效果却不一样比如div默认是width:100%,通常不用写100%如果是table,如果div内的table没有设定100%,那就是最 ...
- mysql replication 复制的一些问题
1 过大的复制延迟 mysql 的复制延迟是一个常见问题,现在已经有一些解决方案,如淘宝开发的一些工具 2 没有磁盘空间 复制导致磁盘空间塞满,二进制日志.中继日志或临时文件把磁盘塞满,slave ...
- android加密解密完美教程
经常使用加密算法:DES.3DES.RC4.AES,RSA等; 对称加密:des,3des,aes 非对称加密:rsa 不可逆加密:md5 加密模式:ECB.CBC.CFB.OFB等; 填充模式:No ...
- 字典对象的 Pythonic 用法(上篇:转载)
转载:https://mp.weixin.qq.com/s?timestamp=1498528588&src=3&ver=1&signature=DfFeOFPXy44ObCM ...
- 爬虫扒下 bilibili 视频信息
B站算是对爬虫非常非常友好的网站啦! 修改转载已取得腾讯云授权 在以上两篇文章中我们已经在腾讯云服务器上搭建好了 Python 爬虫环境了,下一步就是在云服务器上爬上我们的爬虫,抓取我们想要的数据: ...
- Android动态载入Dex机制解析
1.什么是类载入器? 类载入器(class loader)是 Java™中的一个非常重要的概念.类载入器负责载入 Java 类的字节代码到 Java 虚拟机中. Java 虚拟机使用 Java 类的方 ...
- JAVA加解密 -- Base64加解密
Base64算法实现:可以将任意的字节数组数据,通过算法,生成只有(大小写英文.数字.+./)(一共64个字符)内容表示的字符串数据. private static final String str ...
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结
今天做一个特殊的业务处理,用JDBC连接SQLServer数据库载入驱动的时候,报例如以下错误: java.sql.SQLException: [Microsoft][SQLServer 2000 D ...