Driver.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace laytp\library\token;
  3. use think\facade\Config;
  4. /**
  5. * Token基础类
  6. */
  7. abstract class Driver
  8. {
  9. protected $handler = null;
  10. protected $options = [];
  11. /**
  12. * 存储Token
  13. * @param string $token Token
  14. * @param int $user_id 会员ID
  15. * @param int $expire 过期时长,0表示无限,单位秒
  16. * @return bool
  17. */
  18. abstract function set($token, $user_id, $expire = 0);
  19. /**
  20. * 获取Token内的信息
  21. * @param string $token
  22. * @return array
  23. */
  24. abstract function get($token);
  25. /**
  26. * 判断Token是否可用
  27. * @param string $token Token
  28. * @param int $user_id 会员ID
  29. * @return boolean
  30. */
  31. abstract function check($token, $user_id);
  32. /**
  33. * 删除Token
  34. * @param string $token
  35. * @return boolean
  36. */
  37. abstract function delete($token);
  38. /**
  39. * 删除指定用户的所有Token
  40. * @param int $user_id
  41. * @return boolean
  42. */
  43. abstract function clear($user_id);
  44. /**
  45. * 返回句柄对象,可执行其它高级方法
  46. *
  47. * @access public
  48. * @return object
  49. */
  50. public function handler()
  51. {
  52. return $this->handler;
  53. }
  54. /**
  55. * 获取加密后的Token
  56. * @param string $token Token标识
  57. * @return string
  58. */
  59. protected function getEncryptedToken($token)
  60. {
  61. $tokenConfig = Config::get('token');
  62. return hash_hmac($tokenConfig['hashalgo'], $token, $tokenConfig['key']);
  63. }
  64. /**
  65. * 获取过期剩余时长
  66. * @param $expiretime
  67. * @return float|int|mixed
  68. */
  69. protected function getExpiredIn($expiretime)
  70. {
  71. return $expiretime ? max(0, $expiretime - time()) : 365 * 86400;
  72. }
  73. }