Laravel 5.5 - 使用Passport的Api未经过身份验证

时间:2017-09-22 13:09:58

标签: php authentication laravel-5 laravel-passport laravel-5.5

我正在使用API​​身份验证的Passport包。

问题是$(b).removeClass('btn-danger btn-warning') ; if ($(b).hasClass('btn-info')) { $(b).removeClass('btn-success btn-warning btn-danger') ; } 正在使用登录方法。并且Auth::attempt也在工作,但在其他方法中它不起作用并返回Auth::user()

我的登录方式

首先登录时,我按NULL检查身份验证 - 它不起作用。

Auth::check()

此处身份验证无效。

public function login(Request $request) {
        $data = json_decode($request->getContent(), TRUE);
        if(!empty($data)) {
            if (Auth::check()) {
                return response()->json(['message'=>'Already Authenticated'], 200);
            } 
            else 
            {
                $email = $data['email'];
                $pass = $data['password'];
                $credentials = array('email' => $email, 'password' =>$pass);
                if(Auth::attempt($credentials)){    
                    $user = Auth::user();  // here it work
                    $success['token'] =  $user->createToken('MyApp')->accessToken;
                    return response()->json(['user' => $user, 'success' => $success], $this->successStatus);
                }
                else {
                    return response()->json(['error'=>'Unauthorised'], 401);
                }
            }
        }
    }

下面我给出了我在api.php文件中写的路线

public function details()
    {
        $user = Auth::user();
        return response()->json(['success' => $user], $this->successStatus);
    }

如果我在下面尝试过,那么它也无效。 但是,如果我删除了Route::group(['middleware' => ['api']], function () { Route::post("/login", ['uses'=>'UserController@login']); Route::get("/details", ['uses'=>'UserController@details']); }); ,那么它将会起作用。

->middleware('auth:api')
上面的网址

Route::get('/user', function (Request $request) { return array( 1 => "John", 2 => "Mary", 3 => "Steven" ); })->middleware('auth:api');

我做了很多研究,但无法解决我的问题。

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

您应该根据请求检查标题

Content-Type: application/json
Authorization: Bearer {{token}}