web-dev-qa-db-ja.com

メソッドIlluminate \ Auth \ RequestGuard :: attemptは存在しません

私はlaravelとLumenの両方に不慣れです。Lumen5.6でoauth2.0を使用してログインAPIを作成していました。パスポートと生成されたトークンをインストールしました。トークンを返します。

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Route;
//use Illuminate\Support\Facades\DB;
use App\User;
use Auth;

public function login(Request $request)
        {
            global $app;    
            $proxy = Request::create(
                '/oauth/token',
                'post',
                [
                    'grant_type'    =>  env('API_GRAND_TYPE'),
                    'client_id'     =>  env('API_CLIENT_ID'),
                    'client_secret' =>  env('API_CLIENT_SECRET'),
                    'username'      =>  $request->username,
                    'password'      =>  $request->password,
                ]

            );
            return $app->dispatch($proxy);
        }  

ユーザー名とパスワードとは別にユーザーの状態を確認する必要があるため、最初にユーザーの資格情報を確認する必要があります。だから私はこれが好きです。

public function login(Request $request)
{

    $credentials = $request->only('username', 'password');

    if (Auth::attempt($credentials)) {
        return ['result' => 'ok'];
    }

    return ['result' => 'not ok'];
}

Here i am getting this error.
Method Illuminate\Auth\RequestGuard::attempt does not exist.

So i tried Auth::check instead of Auth::attempt.
Now there is no error but it always return false even though the credentials are valid.

I searched a lot for a solution but i didn't get.
12

機能ガードは、Webミドルウェアを使用したルートでのみ使用可能です

public function login() {

  if(Auth::guard('web')->attempt(['email' => $email, 'password' => $password], false, false)) {requests
     // good
  } else {
    // invalid credentials, act accordingly
 }
}
14
Samuel Dervis