H_Franky 2021-01-03 16:16 采纳率: 22.7%
浏览 108
已采纳

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

目前在做一个前后端分离的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条回答 默认 最新

  • 放风喽 2021-01-03 22:14
    关注

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 放风喽 2021-01-03 18:34
    关注

    你的问题百度都能解决。

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

    1.token和Session

    2.jwt的token

    评论
  • H_Franky 2021-01-03 18:52
    关注

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

    评论
  • 放风喽 2021-01-03 19:10
    关注

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

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

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

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

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

    评论
  • H_Franky 2021-01-03 19:46
    关注

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

    评论
  • H_Franky 2021-01-03 22:53
    关注

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

    评论
  • 放风喽 2021-01-03 23:05
    关注

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

    session保险,有IO压力

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

    评论
  • H_Franky 2021-01-03 23:17
    关注

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

    评论
  • 放风喽 2021-01-03 23:48
    关注

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

    评论
  • H_Franky 2021-01-04 08:41
    关注

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

    评论
  • 放风喽 2021-01-04 12:37
    关注

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

    评论
  • Lazy33 2021-01-04 13:56
    关注

    axios 封装? 我有啊!

    评论
  • Lazy33 2021-01-04 13:56
    关注

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

    评论
查看更多回答(12条)

报告相同问题?

悬赏问题

  • ¥20 python 3des pyDes库
  • ¥15 关于#mysql#安装失败的问题。MySQL
  • ¥15 想问一下for循环计算表达式的方法,第一次接触
  • ¥15 如何在VA框架上面加功能,去读取框架内任何app数据功能
  • ¥15 关于#c语言#的问题:用c或c++写一个计算下列问题有关软件工程的代码并加上分析
  • ¥15 Zeppelin0.10.0版本升级lib包下的shiro-web
  • ¥15 链表入队的指针内存问题
  • ¥20 vba如何写本地html文件执行js
  • ¥15 VS2022的C#如何创建
  • ¥20 关于#用户注册#的问题,如何解决?