当前位置: 首页 > 知识库问答 >
问题:

Laravel-Auth::尝试无效,返回false

管玉堂
2023-03-14

我试图在laravel中登录,但我使用的是mssql和名为us的用户表。

在config/auth中。php我更改了提供程序以更改表名:

'providers' => [
    //'users' => [
    //    'driver' => 'eloquent',
    //    'model' => App\User::class,
    //],

    'users' => [
      'driver' => 'database',
      'table' => 'us',
    ]
],

我还创建了一个名为authenticated的中间件:

public function handle($request, Closure $next)
{
  if(Auth::check())
  {
    return $next($request);
  }
  else {
    return redirect('/login');
  }

}

现在我创建了一个post路由/登录,现在我在没有控制器的情况下执行所有路由中的操作:

 Route::post('/login', function()
{
  echo "login...";
  $username = Input::get('username')."</br>";
  $password = Input::get('password')."</br>";
  $remember = Input::get('remember')."</br>";


  $userdata = array(
    'username'  => Input::get('username'),
    'codeApp'  => Input::get('password')
  );
  $rules = array(
        'username' => 'required|exists:us,username',
        'codeApp' => 'required|exists:us,codeApp'
  );

  $validator = Validator::make($userdata, $rules);

  if ($validator->passes())
  {
    $auth = DB::table('us')->where('username', '=', Input::get('username'))
      ->where('codeApp', '=', Input::get('password'))->get()->first();
    // Try to log the user in.
    if ($auth)
    {
        // Redirect to homepage
        //Auth::login($auth);
        dd(Auth::attempt(['username' => $username, 'codeApp' => $password], $remember));
        if(Auth::attempt(['username' => $username, 'codeApp' => $password], $remember))
        {
          echo "ok";
          return Redirect::to('app/groups');
        }

    }
  }
  else
  {
    echo "error";
    return Redirect::to('login')->withErrors($validator);
  }
});

当我把正确的数据在形式$auth获得正确的用户,但在dd(Auth::attempt(['username'=

我怎样才能解决这个问题?

谢谢


共有1个答案

锺离德庸
2023-03-14

问题是,在Route::('/log',函数() {}中,您为变量分配了错误的值

$username = Input::get('username')."</br>";
$password = Input::get('password')."</br>";
$remember = Input::get('remember')."</br>";

因为您对进行了额外的串联。"

还有一件事——你不需要对数据库进行额外的查询,然后像你一样检查结果:

$auth = DB::table('us')->where('username', '=', Input::get('username'))
      ->where('codeApp', '=', Input::get('password'))->get()->first();
    // Try to log the user in.
    if ($auth)
    {}

只是因为您已经使用验证规则检查了提供程序用户和appCode是否存在

$rules = array(
        'username' => 'required|exists:us,username',
        'codeApp' => 'required|exists:us,codeApp'
  );

因此,在验证检查之后,只需进行Auth::trunt(…) 就完成了。

为了让你的代码更好地替换所有的输入::用相应的变量获取(“......”)调用。

还有一个建议——不要用echo调试应用程序流——使用\Log::debug(“你想调试的任何东西”)写入Laravel的日志文件,你可以用尾部-f跟踪。/存储/日志/laravel.log控制台命令

 类似资料:
  • 我有一个函数 当我dd时,即使我在控制器上声明了auth facade,它也会返回null 这是我的路线,它存储在

  • 问题: 在我的索引页面上,经过身份验证的用户和来宾应该能够查看和使用该页面,除非他们想保存某些内容。我试图登录以便保存数据,但被重定向到一个经过身份验证的页面,这是一个配置文件页面。我尝试在配置文件页上转储,它返回用户登录的数据,尝试在索引页上再次转储,然后返回null 我正在使用最新版本的Laravel。 我在谷歌上搜索了一些与我遇到的问题相同的问题,最接近的问题是Auth::user()返回n

  • 我设置了一个自定义的警卫和登录控制器 登录很好,但不知怎么的,它没有存储经过身份验证的用户 我读过这个"Auth::user()在Laravel 5.2中返回null" 并且这个"Auth::user()返回null" 但我认为我的问题与中间件无关 代码如下: 控制器: 型号: config/auth.php: 路线表: 我还尝试将此添加到控制器: 当我试图从视图访问Auth::user()时,它

  • 我搜索并找到了如下各种结果:auth()- 但是,我的仍然不起作用。 在控制器中工作,但在模型中不工作。它返回。 代码是: 我尝试,它也返回。 任何想法?

  • 编辑的 Laravel版本:5.2.45 PHP版本:5.6 数据库驱动程序 你好 我完成了从laravel 5.1到5.2的更新,并解决了一些问题... 现在我尝试登录,但认证验证密码字段的密码,但在我的数据库密码有另一个名称是senha。 照亮/Auth/EloquentUserProvider.php 您可以看到,函数试图在凭据中找到字符串密码,而它应该是senha 同样的问题与valida

  • 我在Laravel中创建了多重身份验证。当我使用用户登录时,在post login方法中调试时,在Auth::guard('user')之后- 如何解决?我是拉威尔的初学者。 谢谢!!! /路由/auth/user。php }); /路由/网络。php }); /app/Controllers/User/Auth/LoginController-@post登录 /应用程序/控制器/用户/家庭控制器

  • 问题内容: 我正在使用,并且尝试在方法中获取经过 身份验证的 用户,因此可以按分配的公司过滤用户,如下所示: 但是,这不会返回用户。我什至尝试过,但不起作用。 如果我移动了的方法,那么这种工作方式如下: 但是,如果我也把它放在construct方法中,这将 失败! 有什么想法为什么会失败吗? 问题答案: docs 您无法在控制器的构造函数中访问会话或经过身份验证的用户,因为中间件尚未运行。 或者,

  • 我使用Laravel 5.2,中间件有问题。routes.php里有密码 Kernel.php: AdminPanel.php 所以,