我试图在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'=
我怎样才能解决这个问题?
谢谢
问题是,在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
控制台命令