JWT Auth配置Dingo Api Laravel 5.1。*

时间:2016-12-27 00:04:23

标签: php laravel jwt dingo-api

我正在使用Laravel 5.1.33和Dingo Api以及JWT Auth,安装了所有这些但现在我很困惑,如果我需要做更多,如果我例如想要验证用户,那么用户无法访问某些路线没有先登录。

我在api.php上修改了这段代码:

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

我很困惑,它来到这里,在哪里添加这个代码,它真正做了什么?

app('Dingo\Api\Auth\Auth')->extend('jwt', function ($app) {
   return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
});

我已经读过dingo / api内置了对tymondesigns / jwt-auth的支持,这是否意味着我不需要编写任何身份验证代码,或者这意味着什么?

有人能告诉我是否必须修改当前的AuthController,如下所示:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

如果是,需要添加哪些方法? 它说Dingo支持内置的jwt auth,因此我决定使用这个软件包,不仅仅是这个原因以及其他一些原因,比如变形金刚,速率限制等......但我仍然感到困惑,我是否需要编写额外的代码对于已在构建中支持的身份验证用户...如果没有,我该如何登录?我没有声明用于身份验证的路由,也没有注册用户,我应该以某种方式将这些路由指向某些控制器,任何人都可以帮忙解决这个问题?

1 个答案:

答案 0 :(得分:-1)

look at this github project,你可以参考它的路线和控制器。

需要添加一些方法,例如

  1. 登录:用户登录获取令牌。
  2. 刷新令牌:当令牌无效时。