我在用Laravel寫一個小東西,我判斷用戶名及密碼無誤后直接實例一個用戶對象并且為這個對象賦值一些屬性。
但是這個位置必須要使用 save 方法后在數(shù)據(jù)庫中新增一條數(shù)據(jù)后才可以使用 Auth::login 方法認(rèn)證,否則一直認(rèn)證不了,請問為什么?
3 回答

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
當(dāng)你的 User
模型在數(shù)據(jù)庫中不存在時,使用 Auth::login($user)
認(rèn)證的用戶,只能在本次請求中生效。
下次請求時,你使用 Auth::user()
等方法獲取已認(rèn)證的用戶,將返回 空
。
因為 laravle
在使用 Auth::user()
等方法獲取已認(rèn)證用戶時,用兩種可能:
- 會在
session
驅(qū)動中獲取已認(rèn)證的用戶ID
- 通過當(dāng)前請求的
cookie
中,獲取用戶ID
無論是那種方式,都要通過數(shù)據(jù)庫查詢該用戶 ID
,把查到的用戶信息設(shè)置到當(dāng)前會話中。所以你不保存用戶信息到數(shù)據(jù)庫時,使用 Auth::login($user)
認(rèn)證的用戶,只能在本次請求中生效。
//默認(rèn)使用的\Illuminate\Auth\SessionGuard
//獲取已認(rèn)證用戶
public function user()
{
//從session驅(qū)動獲取已認(rèn)證用戶ID
$id = $this->session->get($this->getName());
$user = null;
if (! is_null($id)) {
//根據(jù)ID查詢用戶信息
if ($user = $this->provider->retrieveById($id)) {
$this->fireAuthenticatedEvent($user);
}
}
//從cookie中解析用戶token + id,并查詢用戶 (略)
return $this->user = $user;
}

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊
save()是用指定的模型向數(shù)據(jù)庫添加數(shù)據(jù),Auth::login會需要去數(shù)據(jù)庫找數(shù)據(jù)來比對,數(shù)據(jù)庫沒有數(shù)據(jù)怎么比對呢。。。
- 3 回答
- 0 關(guān)注
- 496 瀏覽
添加回答
舉報
0/150
提交
取消