私はLaravel 5.1アプリケーションの内部でステートレスログインと検証にJWT認証を使用するAPIセクションを作成しました。 このアプリは、laravelによって提供される認証サービスと 'users'テーブルをデフォルトとして使用します。私のAPIは 'クライアント'テーブルの認証が必要です。 私は、auth.php設定ファイルをmodel => 'Models\AuthClient'
とtable => 'clients'
に変更するミドルウェアを作成することで、JWTを使用するときにusersテーブルを回避することができました。すべての良好な検証作業は、資格情報が正しいときにトークンを作成します。Laravel 5.1 JWTカスタムテーブルからログインしたユーザーを取得します
ミドルウェア:
public function handle($request, Closure $next)
{
\Config::set('auth.model', 'App\Models\AuthClient');
\Config::set('auth.table', 'clients');
return $next($request);
}
ApiAuthControllerログイン機能:
public function authenticate(Request $request)
{
$cred = $request->only('email', 'password', 'client_code');
$validator = $this->validator($cred);
if($validator->fails()) {
return response()->json($validator->errors());
}
$credentials = ['email'=> $cred['email'], 'password'=> $cred['password']];
/*
* If the user enters a "client_code", login the user with that credential
*/
if(issetNotEmpty($cred['client_code'])) {
\App\Models\AuthClient::$defaultAuth = 'client_code';
$credentials = ['client_code' => $cred['client_code'], 'password' => $cred['client_code']];
}
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'Datele de autentificare nu sunt corecte.'], 401);
}
} catch (JWTException $e) {
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
私はこのようなトークンからログインしているユーザーを取得しようとすると、私の問題がある:
public function getContracts(Request $request)
{
$client = JWTAuth::parseToken()->authenticate();
$contracts = $client->contracts;
dd($client);
return response()->json($contracts);
}
authenticate()
関数は 'clients'の代わりに 'users'テーブルからマッチモデルを返しますalt私はauth.phpとjwt.phpを 'Models \ AuthClient'に設定し、IDは 'clients'からのものです。
AuthCientモデル:
class AuthClient extends Model implements AuthenticatableContract, CanResetPasswordContract
{
use Authenticatable, CanResetPassword;
protected $table = 'clients';
public static $defaultAuth = 'email';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [ 'email', 'login_password', 'api_token'];
protected $hidden = ['login_password', 'api_token'];
}
私は何をしないのですか?
ありがとうございます!