【发布时间】:2017-09-22 13:09:58
【问题描述】:
我正在使用 API Authentication 的 Passport 包。
问题是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);
}
}
}
}
此处身份验证不起作用。
public function details()
{
$user = Auth::user();
return response()->json(['success' => $user], $this->successStatus);
}
下面我给出了我写在我的 api.php 文件中的路线
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');
上面的网址是{"error":"Unauthenticated."}
我做了很多研究,但无法解决我的问题。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
也发布您的路线
-
@MayankPandeyz ,我已经更新并提及了我的路线。
标签: php authentication laravel-5 laravel-passport laravel-5.5