weixin_41359495
H_Franky
采纳率23.3%
2021-01-03 16:16

php+vue关于登录验证的问题求教!

5
已采纳

目前在做一个前后端分离的PC端毕设,数据是通过JSON格式传递的,php没用框架。对于这个登录验证有几点疑惑,我自己也有对于的理解,但不确定是否正确,求解答,谢谢!

1、后端php登录成功返回一个token,后端是怎么生成这个token的?

我的目前是邮箱+密码+当前时间戳再用md5加密生成,且每次登录都返回一个新的token

2、想给token一个有效期,需要前端给还是后端给?要怎么给?需要把这个token和有效期放数据库吗?除了这些还需要对它处理什么?

目前只把token存数据库

3、前端vue接收到这个token,如何去处理这个token?存localStorage?sessionStorage?Cookie?然后其他页面如何验证它是否已经登录了?

我的理解是设置请求头和返回拦截器,再设置路由守护和需要登录才能访问的路由加上meta: {requiresAuth: true},但这里的配置我不太会,网上的也五花八门的,不是很懂,还有就是localStorage、sessionStorage、Cookie究竟存哪个更合适我也搞不清楚。

请各位讲详细点,给个流程或者最好是能给出demo,谢谢!!!

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

13条回答

  • qq_43656607 放风喽 4月前

    前端什么都不干,登录后将token记住,注销就删除token,发送请求就带上token,定时刷新token

    后端登录验证成功后,计算出一个token给前端。每次请求用秘钥将token解密,获取用户ID、token产生时间、过期时间,验证是不是过期了。

    验证通过就返回数据,不通过就返回错误提示。

    计算token的时候,可以人为添加一些前缀和后缀,增加破-0-解难度。

    点赞 评论 复制链接分享
  • Lazy33 Lazy33 4月前

    我的csdn博文 请求响应拦截器也有

    点赞 评论 复制链接分享
  • Lazy33 Lazy33 4月前

    axios 封装? 我有啊!

    点赞 评论 复制链接分享
  • qq_43656607 放风喽 4月前

    百度搜索   axios的封装。我只用axios,别的不会。

    点赞 评论 复制链接分享
  • weixin_41359495 H_Franky 4月前

    那请问一下,vue的请求和响应拦截怎么写?可以给个demo或者流程吗?还有路由守护

    点赞 评论 复制链接分享
  • qq_43656607 放风喽 4月前

    我不懂php。我只会python和vue。

    点赞 评论 复制链接分享
  • weixin_41359495 H_Franky 4月前

    好的,谢谢,最后请问一下,像毕设的项目,php写接口的话有必要用框架吗?因为php不太熟,现在很纠结,如果有,用什么框架比较好?

    点赞 评论 复制链接分享
  • qq_43656607 放风喽 4月前

    是的,都是为了验证请求方是不是登录用户的。

    session保险,有IO压力

    jwt没有IO压力,但无法踢人下线

    点赞 评论 复制链接分享
  • weixin_41359495 H_Franky 4月前

    后端生成jwt token返回给前端,前端用localStorage存储起来,然后添加到请求头和用作路由守护,当做是否登录的验证。我的理解是jwt token和sessionId的作用是一样的,只用其一就行,不知是不是这样

    点赞 评论 复制链接分享
  • weixin_41359495 H_Franky 4月前

    所以,如果用jwt,后端和前端需要做什么处理?

    点赞 评论 复制链接分享
  • qq_43656607 放风喽 4月前

    session存在服务器端,token存在客户端,验证的时候,对两个数据进行特定处理后对比,也可以不处理,直接对比。

    这样需要遍历数据库,对数据库有压力。好处是这样不需要设置过期时间。还可以单点登录。

    jwt的理念是用计算代替IO。将秘钥,创建时间,过期时间,用户ID全部加密处理,生成jwt-token。

    好处是验证的时候,不需要数据库参与,降低IO压力。

    坏处是,一个用户在同一时间可以拥有多个jwt-token,如果用户账户被盗,没法踢下线。

    点赞 评论 复制链接分享
  • weixin_41359495 H_Franky 4月前

    就因为百度过了,越看越迷,五花八门,有些又不完整。可能我更倾向jwt的token吧,再问个问题:token和sessionId的作用是不是一样的?只需使用一种就行?

    点赞 评论 复制链接分享
  • qq_43656607 放风喽 4月前

    你的问题百度都能解决。

    token大致两种,你要那种???

    1.token和Session

    2.jwt的token

    点赞 评论 复制链接分享

相关推荐