[php] Laravel : Auth :: user ()-> id가 객체가 아닌 속성을 가져 오려고합니다.

사용자를 추가하기 위해 양식을 제출할 때 “비 개체의 속성을 가져 오는 중”이라는 오류가 발생합니다.이 오류는 분명히 첫 번째 줄에 있습니다. Auth :: user ()-> id of the following :

$id = Auth::user()->id;
$currentuser = User::find($id);
$usergroup = $currentuser->user_group;
$group = Sentry::getGroupProvider()->findById($usergroup);

$generatedPassword = $this->_generatePassword(8,8);
$user = Sentry::register(array('email' => $input['email'], 'password' => $generatedPassword, 'user_group' => $usergroup));

$user->addGroup($group);

어떤 아이디어? 나는 잠시 동안 검색했고 내가 보는 모든 것이 이것이 잘 작동한다고 말합니다. 내 사용자는 Sentry 2 인증 번들을 사용하여 로그인했습니다.



답변

을 사용하는 경우 Sentry로그인 한 사용자를 Sentry::getUser()->id. 당신이 얻는 오류 Auth::user()는 NULL을 반환하고 NULL에서 ID를 얻으려고 시도하므로 오류 trying to get a property from a non-object입니다.


답변

이제 laravel 4.2에서는 사용자 ID를 쉽게 얻을 수 있습니다.

$userId = Auth::id();

그게 다입니다.

그러나 id 이외의 사용자 데이터를 검색하려면 다음을 사용하십시오.

$email = Auth::user()->email;

자세한 내용 은 문서의 보안 부분을 확인하십시오.


답변

로그인이 잘되었는지 확인하기 전에 Auth :: check ()를 수행하십시오.

if (Auth::check())
{
    // The user is logged in...
}


답변

id는 protected입니다./models/User.php

public function getId()
{
  return $this->id;
}

그래서 당신은 그것을 부를 수 있습니다

$id = Auth::user()->getId();

사용자가 로그인되어 있는지 항상 테스트하십시오 …

if (Auth::check())
{
     $id = Auth::user()->getId();
}


답변

Laravel 5.6에서는

use Auth;
$user_id = Auth::user()->id;

다른 제안으로

Auth::id()

Laravel 5.x의 이전 버전에 적용되는 것으로 보이며 저에게 적합하지 않았습니다.


답변

사용 route중인 함수를 확인하십시오. Auth::user()Auth :: user () 데이터를 얻으려면 함수가 web미들웨어 내에 있어야합니다 Route::group(['middleware' => 'web'], function () {});.


답변

미들웨어 인증을 포함하고 사용하는 것을 잊지 마십시오.

use Illuminate\Http\Request;

그런 다음 요청 방법을 사용하여 ID를 찾으십시오.

$id= $request->user()->id;