PHP 개발 앱 인터페이스, 사용자 로그인 문제
로그인 성공 후 이전 사용자 로그인 인터페이스가 서버에 저장되지 않는 상황입니다session
. 따라서 사용자가 로그인에 성공하더라도 특정 인터페이스를 조정할 때 user_id
은 서버의 session
에서 가져오는 대신 매개변수로 전달되어야 합니다.
오늘은 로그인 및 등록 인터페이스를 수정하고 싶습니다. 제 동료가 앱 인터페이스에는 session
개념이 없다고 했지만, 저는 항상 서버에 사용자 세션을 저장하는 다른 방법이 있어야 한다고 생각합니다.
그래서 모든 마스터들에게 묻고 싶습니다.
으아악모두들 감사합니다!
jwt를 살펴보세요
자체 포함: 페이로드에는 사용자에게 필요한 모든 정보가 포함되어 있습니다
토큰과 만료시간을 설정하고, 토큰을 사용하여 인증합니다
먼저 앱이 이 인터페이스를 호출하는 경우 전달된 사용자 이름과 비밀번호를 확인한 후 토큰을 반환합니다.
Token은 저장할 테이블을 생성하며, 테이블은 user_id 토큰 만료_data 및 기타 필드를 저장합니다. 토큰과 user_id는 고유합니다.
앞으로는 그가 다른 인터페이스를 요청할 때마다 이 토큰만 가져오면 되며 토큰을 확인할 수 있습니다.
전달된 토큰은 기본적으로 고유한 것으로 암호화/만료/보장됩니다.
1. 요청 헤더에 사용자
username
및password
를 가져와서 확인을 위해 서버로 이동한 다음 요청을 통과한 후 비즈니스 로직을 계속 진행합니다.장점: 서버 측
api
가 마음대로 호출되는 것을 방지합니다.단점: 사용자 이름과 비밀번호가 매번 교환되고 상호 작용량이 많고 비밀번호 일반 텍스트 전송이 안전하지 않습니다.
username
和password
,到服务器端做验证,通过才继续下边业务逻辑。优点:防止了服务器端
api
被随意调用。缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。
2.第一次请求,要求
username
和password
,验证通过,发送cookie
到客户端,app
保存cookie
值。每次请求带上
cookie
。优点:和
pc
上浏览器认证的原理一样了。以上两点,只有注册用户,才能有权访问业务逻辑。
而有些
app
有大量的不需要注册数据api3.制定一个
🎜위 두 가지 사항에서 등록된 사용자만 비즈니스 로직에 접근할 수 있습니다.token
生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。缺点:随机串生成规则要保密。
그리고 일부
앱
에는 등록 데이터가 필요하지 않은 API가 많이 있습니다🎜 🎜3. 서버와 클라이언트가 공유하는 몇 가지 공통 속성을 기반으로 임의의 문자열을 생성하는token
생성 규칙을 개발하고, 서버는 요청을 받으면 이 문자열을 확인합니다. .단점: 무작위 문자열 생성 규칙은 기밀로 유지되어야 합니다. 🎜
이렇게 할 수 있습니다. 다양한 사용자가 인증 인터페이스를 통해 서로 다른 토큰을 얻고, 토큰의 만료 시간을 설정하고, 클라이언트가 각 요청의 헤더에 토큰을 넣도록 하고, 토큰을 정기적으로 업데이트합니다
토큰을 사용하여 클라이언트 쿠키에 저장된 기존의 session_id를 대체한 다음 토큰은 redis와 같은 데이터베이스에서 키 이름으로 사용되며 키 값은 사용자 uid이며 session_id는 내장된 기능을 통해 시뮬레이션할 수 있습니다. 만료 메커니즘
저희 회사에는 토큰과 만료 시간이 있습니다. 로그인할 때마다 토큰이 갱신됩니다
궁금할 때 저희 사이트에 물어본 내용입니다
동료가 앱에 세션 개념이 없다고 해서 정확하지 않은 것 같아요! 이전 질문이 도움이 되었기를 바랍니다.
로그인은 서버가 로그인에 성공한 ID를 생성하여 클라이언트에 반환하는 것입니다. 클라이언트 요청은 로그인 ID를 가져오고, 서버는 로그인을 통해 사용자 정보를 확인합니다.
안전한 방법은
access_token
입니다. 이 시점에서 WeChat의 API 인터페이스를 살펴볼 수 있습니다.access_token
。这点可以看看微信的api接口;简单做法,就是
간단한 방법은user_id
user_id
입니다.🎜