RefreshTokenController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace oauth2\controllers;
  3. use Yii;
  4. use GuzzleHttp\Psr7\ServerRequest;
  5. use oauth2\components\Response;
  6. use common\helpers\ResultHelper;
  7. use oauth2\repository\RefreshTokenRepository;
  8. /**
  9. * 刷新access_token
  10. *
  11. * Class RefreshTokenController
  12. * @package oauth2\controllers
  13. * @author jianyan74 <751393839@qq.com>
  14. */
  15. class RefreshTokenController extends OnAuthController
  16. {
  17. public $modelClass = '';
  18. /**
  19. * 不用进行登录验证的方法
  20. * 例如: ['index', 'update', 'create', 'view', 'delete']
  21. * 默认全部需要验证
  22. *
  23. * @var array
  24. */
  25. protected $authOptional = ['create'];
  26. /**
  27. * @throws \Exception
  28. */
  29. public function init()
  30. {
  31. parent::init();
  32. $refreshTokenRepository = new RefreshTokenRepository();
  33. $grant = new \League\OAuth2\Server\Grant\RefreshTokenGrant($refreshTokenRepository);
  34. $grant->setRefreshTokenTTL(new \DateInterval(Yii::$app->params['user.refreshTokenExpire'])); // new refresh tokens will expire after 1 month
  35. Yii::$app->services->oauth2Server->set($grant); // 写入服务
  36. }
  37. /**
  38. * @return mixed
  39. */
  40. public function actionCreate()
  41. {
  42. /* @var \League\OAuth2\Server\AuthorizationServer $server */
  43. $server = Yii::$app->services->oauth2Server->get();
  44. $response = new Response();
  45. $request = ServerRequest::fromGlobals();
  46. // Try to respond to the request
  47. try {
  48. $server->respondToAccessTokenRequest($request, $response);
  49. } catch (\League\OAuth2\Server\Exception\OAuthServerException $exception) {
  50. return ResultHelper::json(422, $exception->getMessage());
  51. } catch (\Exception $exception) {
  52. return ResultHelper::json(422, $exception->getMessage());
  53. }
  54. }
  55. /**
  56. * 权限验证
  57. *
  58. * @param string $action 当前的方法
  59. * @param null $model 当前的模型类
  60. * @param array $params $_GET变量
  61. * @throws \yii\web\BadRequestHttpException
  62. */
  63. public function checkAccess($action, $model = null, $params = [])
  64. {
  65. // 方法名称
  66. if (in_array($action, ['index', 'view', 'update', 'delete'])) {
  67. throw new \yii\web\BadRequestHttpException('您的权限不足,如需要请联系管理员');
  68. }
  69. }
  70. }
粤ICP备19079148号