繁体   English   中英

验证在Laravel 5.4中不起作用

[英]authentification not working in laravel 5.4

在RegisterController中,我写道

$user=User::create([ ... ]); 
Auth::login($user); 
$myid = Auth::id(); 
return redirect()->route('profile',['id'=>$myid]),

我重定向到具有新ID的页面。

在web.php中,我写道

Route::get('/profile/{id}','ProfileController@show')->name('profile');

但是在ProfileController节目中,我写了dump(Auth::user()) ,它显示了我尝试使用会话的'null'。 但是会话未保存,并且还显示“ null”。 我试图更改Kernel.php,但没有帮助。 尽管Laravel自动使用了该中间件,但我尝试了所有路由转移到中间件Web的过程。 当然,它也没有帮助。 我有这个问题。

您应该像这样检查它:

dd(Auth::user());

要么:

dd(auth()->user());

而且不是这样的:

dump(Auth::user)

我建议使用Auth::attempt($credentials); 方法,而不是直接调用Auth :: login()。

Auth::attempt($credentials);

将尝试使用提供的用于建立会话和所有会话的凭据登录用户,如果成功则返回true,否则返回false。 因此,您可以在那里立即测试结果。

查看文档: https : //laravel.com/docs/5.4/authentication#authenticating-users

您还可以使用Auth::guard([any-guard])->attempt($credentials)来指定防护。 如果您没有将名称传递给guard(),它将使用默认的guard。

另一个重要的事情是,在创建密码并将其传递给新用户之前,您必须对密码进行哈希处理。 因为所有这些方法(例如try())都会尝试匹配密码的哈希版本。 您可以像这样对密码进行哈希处理:

Hash::make(<your-password>);

记得添加use Hash; 在文件的标题中,或在类名前加上反斜杠,例如: \\Hash::make(<your-password>)

PS:这仅用于用户创建时间。 因为Auth::attempt()会自动对密码进行哈希处理。 这意味着您不必担心在通过密码进行身份验证之前对密码进行哈希处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM