【发布时间】:2016-02-04 19:38:50
【问题描述】:
我有两个控制器; AuthController 和 CheckoutController 现在我的 AuthController 处理用户 Logins 和 Registrations,当用户登录时,我可以检查他们的登录状态并获取他们的 @987654324 @来自AuthController。
但是,当我尝试在我的 CheckoutController 中执行此操作时,我总是有 Auth::user()->id 返回此错误:
试图获取非对象的属性
.
无论我做什么都是一样的,我在网上寻找解决方案,但没有找到任何相关信息。
我刚刚意识到一些事情,我的 AuthController 和 CheckoutController 位于 2 个不同的命名空间,我想知道这是否是原因/原因。
这是我的登录代码:
/**
* Handle a login request to the application.
*
* @param LoginRequest $request`
* @return Response
*/
public function postLogin(LoginRequest $request)
{
$credentials = $request->only('email', 'password');
try {
// verify the credentials and create a token for the user
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['code' => 300, 'message' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
}
$url_parts = parse_url($request->url());
$host_parts = explode('.', $url_parts['host']);
if ($host_parts[0] == "admin")
{
$user = User::find(Auth::user()->id);
if (!$user->is('administrator'))
{
Auth::logout();
return response()->json(['error' => 'You Are Not Authorized!']);
}
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
【问题讨论】:
-
请发布您从
AuthController和CheckoutController引用的代码。 -
如果您使用 Laravel 的默认 Auth ,在其他名称空间中只需使用 \Auth::user()->id 确保用户也登录
-
好的,我现在已经添加了我的登录代码。
标签: laravel authentication laravel-5 jwt