【问题标题】:Laravel 5 user can not be retrieved after successful authenticationLaravel 5 用户认证成功后无法找回
【发布时间】:2015-11-08 20:50:22
【问题描述】:

我正在使用 Laravel 5.1 并尝试实现用户身份验证。基本上没有登录就不能访问任何路线。 内置特征 (AuthenticatesAndRegistersUsers) 无法正常工作,因为在成功验证后,重定向控制器将无法通过 Auth::user()$this->auth->user$request->user() 拉出用户。

我确实在$this->auth->attempt() 之后通过 var-dumping 用户验证了这是一次成功的尝试。

但是使用return redirect()->intended(...) 重定向后,无法拉取用户。

我现在尝试通过跳过AuthenticatesAndRegistersUsers 并将其直接写入AuthController 来实现它,但再次遇到同样的问题。

这是AuthController 中进行验证的部分:

$this->validate($request, [
    'email'    => 'required|email',
    'password' => 'required',
]);

$credentials = $request->only('email', 'password');

//attempt to authenticate
//if successful, redirect to the intended url or the default redirectPath
if ($this->auth->attempt($credentials, $request->has('remember')))
{
    //when I do dd($this->auth->user()) here it shows the correct user record
    return redirect()->intended($this->redirectPath);
}

它重定向到正确的 url (HomeController),但无法检索到用户(在 show 方法或任何其他方法中):

dd(Auth::user()); //null
dd(Auth::check());//null

HomeController 扩展了我的 BaseController,它使用了 auth 中间件

public function __construct()
{
    $this->middleware('auth');
}

我有 Laravel 4 自定义身份验证,一切正常,我对 Laravel 5 中的中间件身份验证概念仍然很陌生。

任何帮助将不胜感激。

【问题讨论】:

  • Yani 你不需要像 Laravel 4 那样暗示,它已经内置了你可以使用的身份验证。我将发布资源填充

标签: authentication laravel-5


【解决方案1】:

如何使用 Laravel 5.1 的内置认证

Laravel 5.1 内置了身份验证功能,几乎可以开箱即用。

需要做的步骤很少,因此您将能够在 Laravel 5.1 的身份验证模板中使用漂亮的默认构建。所以你不需要像 Laravel 4.0 那样再次发明那个轮子。

1- 安装 Laravel 的新副本(关注 http://laravel.com/docs/5.1)我只需使用此命令即可 composer create-project laravel/laravel --prefer-dist

2- 在视图resources\views\auth 中创建auth 文件夹并将所有资源文件从https://github.com/laravel/laravel/tree/5.0/resources/views/auth 复制到该文件夹​​

3- 在public 文件夹内创建cssfonts 文件夹,并从资源https://github.com/laravel/laravel/tree/5.0/public 复制这两个文件夹的内容

4- 更新您的路线文件,如下所示

Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

关于https://github.com/laravel/laravel/blob/5.0/app/Http/routes.php

5- 在您的 MySQL 中创建空数据库。

6- 使用数据库信息等更新您的 .env 文件。

7- 运行php artisan migrate

8- 去浏览器写http://YourLaravelHostProject/auth/register

9-(可选)如果您想在登录/注册过程后更改/home 登录页面,请在app\Http\Controllers\Auth 中编辑AuthController.php

这一行之后

use AuthenticatesAndRegistersUsers, ThrottlesLogins;

添加您所在位置的代码

//forward after login
protected $redirectPath = '/YourLocation'; 

就是这样。现在您可以使用默认的登录/注册/重置密码模板。您可以对其进行修改以供进一步使用。

php artisan 迁移结果

登录页面的浏览器快照

也可以按照 Laravel 文档制作更简单的认证模板。

Laravel 认证文档http://laravel.com/docs/5.1/authentication

【讨论】:

  • 谢谢。但是使用内置的 Laravel 5 功能会导致我出错。可能是迁移问题。目前,如果我尝试您的建议,我会收到 Cannot redeclare class Illuminate\Container\BindingResolutionException 错误,并且我已经检查了 1000 次,它只被减速了一次。我会尝试安装一个新的 laravel 项目。
  • 是的,我认为这应该会有所帮助,您可能已经做了一些刻薄的事情。
  • 我在迁移时也遇到了另一个问题,与工匠命令失败有关,所以我认为最好进行全新安装。我可能从 4.2 开始搞砸了。安装后会再试一次。
  • 我已经用正确的步骤更新了我的答案,这样你就可以让你的登录模板工作了。请告诉我
  • 任何进程@Yani,在丹麦已经很晚了,现在要睡觉了,希望一切都按计划进行:) 也提出了这个问题。贡尼特。
猜你喜欢
  • 2023-03-08
  • 2021-02-17
  • 1970-01-01
  • 2017-10-25
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
相关资源
最近更新 更多