我正在尝试使用Laravel创建一个Auth和Login应用程序,但它总是失败。 我总是看到“用户名或密码不正确”。在login.blade.php中
我的文件就像theese;
route.php
Route::get('login' , function() {
return View::make('auth.login');
});
Route::post('logincontrol', function() {
$userdata = array(
'username' => Input::get('username'),
'password' => Input::get('password')
);
if ( Auth::attempt($userdata) )
{
return Redirect::to('auth.dashboard');
}
else
{
return Redirect::to('login')
->with('login_errors', true);
}
});
Route::get('dashboard', function(){
echo 'welcome';
});
Route::get('insert', function() {
DB::table('users')->insert(array(
'username' => 'admin',
'password' => Hash::make('admin')
));
});
login.blade.php
{{ Form::open( array('url' => 'logincontrol') ) }}
<!-- check for login errors flash var -->
@if (Session::has('login_errors'))
<span class="error">Username or password incorrect.</span>
@endif
<!-- username field -->
<p>{{ Form::label('username', 'Username') }}</p>
<p>{{ Form::text('username') }}</p>
<!-- password field -->
<p>{{ Form::label('password', 'Password') }}</p>
<p>{{ Form::password('password') }}</p>
<!-- submit button -->
<p>{{ Form::submit('Login') }}</p>
{{ Form::close() }}
首先,我运行插入URL并将admin添加到我的数据库。
然后我显示/登录URL表单。我在插入路由中输入用户名和密码,但我总是变错。
我从http://codehappy.daylerees.com/authentication获取了代码,我阅读了所有页面但我无法做到。
编辑:我试过了;
'password' => Hash::make( Input::get('password') )
但它不起作用:(
编辑:我的auth.php文件是这样的。
return array(
'driver' => 'eloquent',
'username'=>'username',
'model' => 'User',
'table' => 'users',
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
);
答案 0 :(得分:1)
总是在变化的Hash是正常的,因为Hash :: check()'进程使用哈希中嵌入的salt来比较纯文本值。 有关此外观的更多信息,请点击此处 http://laravel.io/topic/20/hashing-in-laravel和http://en.wikipedia.org/wiki/Salt_(cryptography)
我偶然发现了你的问题,因为我遇到了确切的错误......
我建议您观看Jeffrey Way关于身份验证的tutorial。如果我发现了什么,我会告诉你,因为我现在也在努力解决这个问题。
答案 1 :(得分:0)
可以在authentication
中找到application/config/auth.php
的配置,在此文件中,有一个username
的设置,如
/*
|--------------------------------------------------------------------------
| Authentication Username
|--------------------------------------------------------------------------
|
| Here you may specify the database column that should be considered the
| "username" for your users. Typically, this will either be "username"
| or "email". Of course, you're free to change the value to anything.
|
*/
默认情况下是
'username' => 'email',
在你的情况下,它是username
,因为你有
DB::table('users')->insert(array(
'username' => 'admin', // looks like you are using username for login
'password' => Hash::make('admin')
));
并按照登录代码
$userdata = array(
'username' => Input::get('username'), // you are using username field
'password' => Input::get('password')
);
// Login
if ( Auth::attempt($userdata) )
{
//...
}
因此,如果您未在application/config/auth.php
文件中更改它,则应将其更改为
'username' => 'username',
或者,您可以在表格中使用email
字段,并使用email
字段而不是username
进行身份验证。顺便说一句,根据问题中的given link,这与Laravel-3
相关。
答案 2 :(得分:0)
有时它会让你感到简单。 今天我花了很多时间处理类似的问题,我的案例中的解决方案是我使用的是artisan generate:scaffold,它创建了用户模型;
class User extends Eloquent
我通过添加
修改了这个模型 implements UserInterface, RemindableInterface
然后添加了以下缺少的功能:
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
return $this->getKey();
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->password;
}
/**
* Get the e-mail address where password reminders are sent.
*
* @return string
*/
public function getReminderEmail()
{
return $this->email;
}
现在一切都适合我。希望这会对你有所帮助。
OSSI