auth не работает в люмене при использовании jwt 1.0.0.3 или бета - PullRequest
0 голосов
/ 19 марта 2020

У меня проблема с jwt в люмене 6. Я могу войти в систему и через API прислать мне токен и более подробную информацию, но когда я пытаюсь вернуть пользователя, вошедшего в него, возвращаемое значение null, я использую tymon / jwt dev в качестве моего контроллера аутентификации

    public function login(Request $request)
    {
        //validate incoming request
        $this->validate($request, [
            'Email' => 'required|string',
            'password' => 'required|string',
        ]);

        $credentials = $request->only(['Email', 'password']);

        if (! $token = Auth::attempt($credentials)) {
            return response()->json(['message' => 'Unauthorized'], 401);
        }

        return $this->respondWithToken($token);
    }

    public function Register(Request $request){

        $User = User::where('Email',$request->Email)->orwhere('Username',$request->Username)->first();
        if (!empty($User)){
            return response()->AloResponse(null, 'fail', Lang::get('messages.DuplicateEmail'));
        }
        $User = User::create([
            'Name' => $request->Name,
            'Email' => $request->Email,
            'Username' => $request->Username,
            'password' => app('hash')->make($request->Password)
        ]);
        return response()->AloResponse($User, 'success', Lang::get('messages.RegisterSuccess'));
    }

его config / auth. php

<?php

use App\Models\Base\User;

return [
    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],

    'guards' => [
        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => User::class
        ]
    ]
];

его authserviceprovider

<?php

namespace App\Providers;

use App\Models\Base\User;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Boot the authentication services for the application.
     *
     * @return void
     */
    public function boot()
    {
        // Here you may define how you wish users to be authenticated for your Lumen
        // application. The callback which receives the incoming request instance
        // should return either a User instance or null. You're free to obtain
        // the User instance via an API token or any other method necessary.

        $this->app['auth']->viaRequest('api', function ($request) {
            if ($request->input('api_token')) {
                return User::where('api_token', $request->input('api_token'))->first();
            }
        });
    }
}

и его моя модель пользователя

<?php
namespace App\Models\Base;
use Illuminate\Auth\Authenticatable;
use Laravel\Lumen\Auth\Authorizable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Model implements AuthenticatableContract, AuthorizableContract, JWTSubject
{
    use Authenticatable, Authorizable;
    protected $table = 'Users_tbl';
    protected $fillable = [
        'Name',
        'Username',
        'password',
        'Email'
    ];
    protected $hidden = [ 'password' ];
    public function Books()
    {
        return $this->hasMany('App\Models\Base\Book','user_id','ID');
    }

    /**
     * @inheritDoc
     */
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    /**
     * @inheritDoc
     */
    public function getJWTCustomClaims()
    {
        return [];
    }
}

мне нужна помощь fini sh это, я думаю, я кое-что забыл, но когда я устанавливаю новый люмен, его работа над ним завершается на моей законченной работе над проектом ...

...