사용자를 추가하기 위해 양식을 제출할 때 “비 개체의 속성을 가져 오는 중”이라는 오류가 발생합니다.이 오류는 분명히 첫 번째 줄에 있습니다. 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;