最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • laravel的api登陆认证

    正文概述 转载于:掘金(陆景学)   2021-08-18   600

    这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战

    Dingo/Api认证文档

    JWT介绍文档

    一、tymon/jwt-auth api认证

    1.1 安装tymon/jwt-auth

    tymon/jwt-auth安装介绍文档

    1、安装tymon/jwt-auth

    composer require tymon/jwt-auth laravel的api登陆认证

    1-1 安装报错可看,不报错可越过。

    如果安装过程中报错,建议先使用php7.x因为现在高版本还不适配,如果你的homesteadphp版本高的话可以降低版本: 使用命令:

    laravel的api登陆认证

    当前切换后切记homestead的环境php也要对应php版本,修改Homestead.yamllaravel的api登陆认证 修改完后记得sudo vagrant reload --provision重启下虚拟机。

    2、发布配置文件,生成 JWT_SECRET

    1、发布配置文件

    php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" laravel的api登陆认证

    2、生成 JWT_SECRET php artisan jwt:secret laravel的api登陆认证 laravel的api登陆认证

    3、更新User模型

    认证一般基于用户,所以我们修改用户模型: laravel的api登陆认证 还要增加两个方法:

    /**
         * Get the identifier that will be stored in the subject claim of the JWT.
         *
         * @return mixed
         */
        public function getJWTIdentifier()
        {
            return $this->getKey();
        }
    
        /**
         * Return a key value array, containing any custom claims to be added to the JWT.
         *
         * @return array
         */
        public function getJWTCustomClaims()
        {
            return [];
        }
    

    laravel的api登陆认证

    4、配置 Auth guard

    laravel的api登陆认证

    二、dingo/api配置

    config/api.php 文件:

    'auth' => [
            'jwt' => 'Dingo\Api\Auth\Provider\JWT',
        ],
    

    laravel的api登陆认证

    三、认证例子

    3.1 失败例子

    1、认证路由

    routes/api下增加需要登录的路由:

        // 需要登陆的路由
        $api->group(['middleware' => 'api.auth'], function($api) {
            $api->get('users', [\App\Http\Controllers\TestController::class, 'users']);
        });
    

    laravel的api登陆认证

    2、认证路由方法

        public function users() {
            $users = User::all();
            return $this->response->collection($users, new UserTransformer);
        }
    

    效果: laravel的api登陆认证 可以看到需要认证了。

    3.2 成功例子

    1、登陆路由

        // 执行登陆
        $api->post('login', [\App\Http\Controllers\TestController::class, 'login']);
    

    laravel的api登陆认证

    2、登陆路由方法

    我们先用dd(bcrypt('12345')获取到加密的密文: laravel的api登陆认证 找到数据库中数据,密码替换: laravel的api登陆认证 然后登陆路由方法

        public function login(Request $request) {
            // dd(bcrypt('12345'));
            $credentials = request(['email', 'password']);
    
            if (!$token = auth('api')->attempt($credentials)) {
                return $this->response->errorUnauthorized();
            }
    
            return $this->respondWithToken($token);
        }
    
         /**
         * Get the token array structure.
         *
         * @param  string $token
         *
         * @return \Illuminate\Http\JsonResponse
         */
        protected function respondWithToken($token)
        {
            return response()->json([
                'access_token' => $token,
                'token_type' => 'Bearer',
                'expires_in' => auth('api')->factory()->getTTL() * 60
            ]);
        }
    

    laravel的api登陆认证postman中测试: laravel的api登陆认证 laravel的api登陆认证 可以看到给我们成功返回token了,复制token,请求users带入: laravel的api登陆认证 可以看到也成功的请求回来需要认证的接口了。

    四、根据token获取用户信息

        public function users() {
            // $users = User::all();
            // return $this->response->collection($users, new UserTransformer);
    
            // 从token获取用户信息
            $user = app('Dingo\Api\Auth\Auth')->user();
            return $user;
        }
    

    laravel的api登陆认证 laravel的api登陆认证 还可以使用:

            $user = auth('api')->user();
            return $user;
    

    laravel的api登陆认证 laravel的api登陆认证

     


    起源地下载网 » laravel的api登陆认证

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元