zoukankan      html  css  js  c++  java
  • 适用于 Laravel Passport 短信授权

    适用于 Laravel Passport 短信授权

    这个包可以让 Laravel Passport 支持短信验证码登录。

    安装

    可以通过Composer安装此软件包。

    composer require larva/laravel-passport-sms -vv
    

    如何使用

    • https://your-site.com/oauth/token 发出 POST 请求, 就像您需要密码或刷新授权一样。
    • POST 正文应包含 grant_type = sms
    • 该请求将被路由到您的 User::findForPassportSmsRequest() 函数, 在该函数中,您将自己确定是否应授予访问权限。
    • 如果成功,将返回一个 access_token 和 refresh_token 。

    请求

    $response = $http->post('http://your-app.com/oauth/token', [
        'form_params' => [
            'grant_type' => 'sms',
            'client_id' => 'client-id',
            'client_secret' => 'client-secret',
            'phone' => '13800138000', 
            'verifyCode' => 'SMS verifyCode',
        ],
    ]);
    

    例子

    这是 User::findForPassportSmsRequest() 方法的样子……

    /**
     * Verify and retrieve user by custom token request.
     *
     * @param IlluminateHttpRequest $request
     *
     * @return IlluminateDatabaseEloquentModel|null
     * @throws LeagueOAuth2ServerExceptionOAuthServerException
     */
    public function byPassportSmsequest(Request $request)
    {
        try {
    			Validator::make($request->all(), [
    				'phone' => [
    					'required',
    					'min:11',
    					'max:11',
    					'regex:/^1[34578]{1}[d]{9}$|^166[d]{8}$|^19[89]{1}[d]{8}$/',
    				],
    				'verifyCode' => [
    					'required',
    					'max:6',
    					function ($attribute, $value, $fail) use ($request) {
              	if (!SmsVerifyCodeService::make($request->phone)->validate($value, false)) {
                	return $fail($attribute . ' is invalid.');
                }
              },
            ]
           ])->validate();
           return static::phone($request->phone)->first();
          } catch (Exception $e) {
          	throw OAuthServerException::accessDenied($e->getMessage());
         }
    }
    

    在此示例中,该应用程序能够基于提交的JSON负载中的 **phone  verifyCode **属性 对用户进行身份验证。
    它将返回null或用户对象。 它还可能会引发异常,解释令牌为什么无效的原因。 
    byPassportSmsRequest捕获任何这些异常,并将它们转换为适当的OAuth异常类型。 如果请求有效负载上没有phone ,那么我们将返回null,这将返回 invalid_credentials 错误响应:

    {
      "error": "invalid_credentials",
      "message": "The user credentials were incorrect."
    }
    
  • 相关阅读:
    Qt 模拟一个导航定位系统
    【编程之美】用C语言实现状态机(实用)
    代码面试之链表
    乾坤合一~Linux设备驱动之USB主机和设备驱动
    乾坤合一~Linux设备驱动之I2C核心、总线以及设备驱动
    乾坤合一~Linux设备驱动之终端设备驱动
    乾坤合一~Linux设备驱动之块设备驱动
    蜕变成蝶~Linux设备驱动之watchdog设备驱动
    蜕变成蝶~Linux设备驱动之按键设备驱动
    蜕变成蝶~Linux设备驱动之DMA
  • 原文地址:https://www.cnblogs.com/fyblzds/p/12780278.html
Copyright © 2011-2022 走看看