Laravel登录(Auth :: attempt)无效

时间:2014-10-17 23:30:09

标签: php laravel laravel-4

嗨,我有Laravel的问题。我无法登录。我尝试了我在网上找到的所有内容。也许有人知道我弄错了什么。创建新用户并发送电子邮件工作正常。登录我不知道像循环这样的工作回来查看没有错误或任何消息。我在laravel中使用调试模式,但它没有显示任何错误。

<?php
    class AccountController extends BaseController {

        //Sign in function start

        public function getSignIn(){
            return View::make('account.signin');
        }

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

            if($validator->fails()){

                return Redirect::route('account-sign-in')
                    ->withErrors($validator)
                    ->withInput();  

            }else{

                if($auth = Auth::attempt(array(
                    'email' => Input::get('email'),
                    'password' => Input::get('password'),
                    'active' => 1

                ), true)){
                    return Redirect::to('/');
                }else{
                    return Redirect::route('account-sign-in')
                        ->with('global', 'Email/password wrong or account not activated');
                }

            }

            return Redirect::route('account-sign-in')
                ->with('global', 'There was a problem signing you in');
        }

        //Sign in function end




        //Create new account function start

        public function getCreate(){
            return View::make('account.create');
        }

        public function postCreate(){
            $validator = Validator::make(Input::all(),
                array(
                    'email'                 => 'required|max:50|email|unique:users',
                    'username'          => 'required|max:20|min:3|unique:users',
                    'password'          => 'required|min:6',
                    'password_again'    => 'required|same:password'
                )
            );


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

                $email      = Input::get('email');
                $username   = Input::get('username');
                $password   = Input::get('password');

                //Activation code

                $code       = str_random(60);

                $user = User::create(array(
                    'email'         => $email,
                    'username'  => $username,
                    'password'  => Hash::make($password),
                    'code'      => $code,
                    'active'    => 0

                ));

                if($user){

                    //Send link function start

                    Mail::send('emails.auth.active', array(
                        'link' => URL::route('account-active', $code),
                        'username' => $username),function($message) use ($user){$message->to($user->email, $user->username)->subject('Activation your account');});

                    //Send link function end

                    return Redirect::route('home')
                        ->with('global', 'Your account has been created! We have sent you an email with activation link');
                }
            }
        }
        public function getActivate($code){
            $user = User::where('code', '=', $code)->where('active', '=', 0);

            if($user->count()){
                $user = $user->first();

                //Update user to active state

                $user->active   = 1;
                $user->code         ='';

                if($user->save()){
                    return Redirect::route('home')
                        ->with('global', 'Activated! You can now sign in!');
                }
            }
                return Redirect::route('home')
                    ->with('global', 'We could not activate your account. Please try again later.');


        }

        //Create new account function end

    }

?>

1 个答案:

答案 0 :(得分:1)

postSignIn()验证程序中,根据您从逻辑和错误消息中可以看到的内容,指定需要username,您需要用户指定要登录的电子邮件和密码。而是尝试:

$validator = Validator::make(Input::all(),
    array(
        'email'                 => 'required|email',
        'password'          => 'required'
    )
);

使用emailpassword提交登录表单时,验证程序始终失败,因为没有username输入