php - Restful检验和登录状态保持
習慣沉默
習慣沉默 2017-05-16 12:58:05
0
2
600

这里暂时不讨论oauth,想先好好理解好jwt

这里两个概念: 校验 和 登录保持 理解的不是很透

我目前是给了android和ios客户端一个密钥secret, 然后我服务端也是用的这个密钥

然后对客户端的诸如 时间戳,nonce等参数配合我给他们的这个密钥 多个参数加密为一个参数sign

然后一起传递给服务端,然后服务端在对前几个参数加上服务端的密码加密一下,最后判断是否等于客户端传来的最后那个参数sign

但是我现在认为我所做的上述验证貌似只能证明这次请求的客户端知道我服务端的秘钥,也就是说这次请求是我服务端允许的

但是至于用户有没有登录貌似还是不知道,所以我就让客户端给我加了一个参数token, 如果用户请求登陆接口并成功登录的话,我就把session存到redis一个月,然后把token=sessionid给返回,让他存储到客户端,下次带着来给我,如果我拿到的话并且在redis中能找到这个session就证明他是登录的

另外看网上有人说这个属于自定义jwt 是么?
我不知道我这么做和jwt的最大区别是什么

比如我这种方法是依赖于sessionid来判断用户的登录状态 服务端是存储了session的

Jwt我看了一会儿资料,好像是给客户端签发token之后 ,服务端好像并没有存这个token, 然后客户端的参数到了以后,貌似也只是做了我自己那种方法的第一步(就是做了多个参数和密钥加密后是否等于sign,) 但好像很多资料说这已经能证明登录了 要这样的话 我的那种方法是不是又用session判断是否登录是多余的

習慣沉默
習慣沉默

모든 응답(2)
世界只因有你

https://jwt.io/

JWT의 특징 중 하나는 Stateless이며 로그인 개념이 없다는 점입니다.

원래 소위 로그인이라는 것은 인간이 이해하는 개념일 뿐이고, 서버에는 이런 개념이 없습니다. 로그인이란 무엇입니까? 승인된 접근(로그인해야만 접근 가능한 콘텐츠)으로만 가능합니다.

某草草

jwt는 토큰에 발급자, 사용자, 서명 및 기타 정보가 포함되어 있어 로그인을 증명하기에 충분하고 변조되지 않았기 때문에 서버 측에 토큰을 저장할 필요가 없습니다. 한 번 변조되면 서명을 확인할 수 없기 때문입니다. sessionid는 다릅니다. 세션은 주로 서버 측에 다른 데이터를 저장하는 데 사용됩니다. 이러한 데이터는 민감하고 jwt에 넣기가 불편할 수 있습니다. 물론 세션은 일종의 저장소일 뿐이며 Redis나 다른 유형의 저장소 시스템에도 저장할 수 있습니다. 실제로 쿠키를 토큰으로 생각할 수도 있으며(틀렸지만 이렇게 하면 더 잘 이해할 수 있습니다) 세션은 값 중 하나일 뿐이며 그 이상은 아닙니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!