Во-первых, я новичок в Laravel.

Итак, у меня в заголовке на каждой странице есть форма, указывающая на запрос POST. Я знаю, что у меня есть правильный адрес электронной почты и пароль пользователя в моей базе данных mySQL, но когда я пытаюсь войти в систему, if (Auth :: try ($ userdata)) всегда терпит неудачу.

Форма:

@if(Auth::check())
    <li><a href="{{ URL::to('/') }}">Home</a></li>
    <li><a href="{{ URL::to('profile') }}">Profile</a></li>
    <li><a href="{{ URL::to('logout') }}">Logout</a>
    @else
    <div class="navbar-form navbar-left">
    {{ Form::open(array('url' => '/account/sign-in')) }}
        <div class="form-group">
        <input type="email" name="email" class="form-control input-sm" placeholder="Email">
        <input type="password" name="password" class="form-control input-sm" placeholder="Password">
        </div>
        <div class="checkbox">
        <label>
          <input type="checkbox"> Remember me
        </label>
        </div>
        <button type="submit" class="btn btn-default btn-sm">Login</button>
    {{ Form::close() }}

ПОЧТА:

Route::post('/account/sign-in', function(){
        $userdata = array(
            'email' => Input::get('email'),
            'password' => Input::get('password')
        );

        if(Auth::attempt($userdata)){
            return 'Success';
        }else{
            return 'Fail';
        }
     });

Я также включил $ fillable в свою модель User.php:

protected $fillable = array('firstname', 'lastname', 'password', 'email', 'code', 'active');

Метод регистрации:

public function postCreate(){
    $validator = Validator::make(Input::all(),
        array(
            'firstname' => 'required',
            'lastname' => 'required',
            'email'    => 'required|max:50|email', // make sure the email is an actual email
            'password' => 'required|alphaNum|min:3', // password can only be alphanumeric and has to be greater than 3 characters
            'password_confirmation' => 'required|same:password'
        )
    );

    if($validator->fails()){
        return Redirect::route('account-create')->withErrors($validator)->withInput();
    }else{

        //Activation Code
        $code = str_random(60);

        $user = new User;
        $pass1 = Input::get('password');
        $pass2 = Input::get('password_confirmation');
        $firstname = Input::get('firstname');
        $user->firstname = Input::get('firstname');
        $user->lastname = Input::get('lastname');
        $user->email = Input::get('email');
        $user->code = $code;
        $user->active = 0;
        if($pass1 == $pass2){
        $user->password = Hash::make(Input::get('pass1'));
        }else{
            return Redirect::to('register/');
        }
        $user->save();
    }


        if($user){
            //send email
            Mail::send('emails.auth.activate', array('link' =>URL::route('account-activate', $code), 'firstname' => $firstname), function($message) use($user){
                $message->to($user->email, $user->firstname)->subject('Activate your Account');
                });

            return Redirect::to('/')->with('global', 'Your account has been create! We have sent you an email to activate your account');
        }
}

Метод входа в UsersController:

public function postSignIn(){
    $validator = Validator::make(Input::all(), 
        array(
            'email' => 'required',
            'pasword' => 'required'
        )
    );

    if($validator->fails()){
        return Redirect::to('/')->withErrors($validator)->withInput();
    }else{
        $user = array(
            'active' => 1,
            'email' => Input::get('email'),
            'password' => Input::get('password')
        );


        if(Auth::attempt($user)){
            //Redirect to intended page
            return Redirect::intended('/')->with('global', 'Success!!');
        }else{
            /*return Redirect::to('/')->with('global', 'Failed to login');*/
            return Input::all();
        }
    }
    return Redirect::to('/')->with('global', 'There was a problem signing in. Did you activate?');
}

Посмотреть:

<ul class="nav navbar-nav navbar-right">
    @if(Auth::check())
    <li><a href="{{ URL::to('/') }}">Home</a></li>
    <li><a href="{{ URL::to('profile') }}">Profile</a></li>
    <li><a href="{{ URL::to('logout') }}">Logout</a></li>
    @else
    <div class="navbar-form navbar-left">
    {{ Form::open(array('url' => '/account/sign-in')) }}
        <div class="form-group">
        <input type="email" name="email" class="form-control input-sm" placeholder="Email">
        <input type="password" name="password" class="form-control input-sm" placeholder="Password">
        </div>
        <div class="checkbox">
        <label>
          <input type="checkbox"> Remember me
        </label>
        </div>
        <button type="submit" class="btn btn-default btn-sm">Login</button>
    {{ Form::close() }}
    </div>
    <li><a href="{{ URL::to('account/create') }}">Register</a></li>
    @endif
</ul>

Благодарность

0
user3479298 31 Мар 2014 в 03:13
1
Правильно ли вы создали пароль с помощью Hash::make()? $fillable здесь не имеет значения, поскольку вы не создаете Пользователя.
 – 
user2094178
31 Мар 2014 в 03:42
Какую ошибку выдает ??
 – 
Anil Sharma
31 Мар 2014 в 10:01
Он не вызывает ошибку, он просто не выполняет оператор if каждый раз, хотя я знаю, что введенная мной информация для входа соответствует данным в базе данных mysql.
 – 
user3479298
31 Мар 2014 в 21:48
Я разместил свой метод регистрации в своем UsersController, я правильно сделал Hash :: make (), я думаю
 – 
user3479298
31 Мар 2014 в 21:51
1
Hash::make(Input::get('pass1')) должно быть Hash::make(Input::get('password'))
 – 
user2094178
31 Мар 2014 в 22:14

1 ответ

Лучший ответ

Из ваших файлов в Dropbox ваш метод postSignIn в UsersController имеет 'pasword' => 'required'.

0
user2094178 1 Апр 2014 в 23:30