使用除用户之外的其他表进行登录验证

Ban*_*ari 5 mysql php-5.3 laravel laravel-4

对于我的项目,我使用学生表进行身份验证和存储信息.对于学生注册,与登录认证不同,所有数据都插入到学生故事中.学生表的属性是[id(primary key and auto incremented), username, password, stdname, stdage, created_at, updated_at].

注册

public function post_register()
{
    $input = Input::all();
    $rules = array(
        'email' => 'required|email|Between:3, 64|unique:student,username',
        'studentPass' => 'required',
        'studentName' => 'required',
        'studentAge'  => 'integer|Min:18|Max:45');
    $messages = array(
        'email.required' => 'You forgot to enter your email id!',
        'email.between'  => 'Email must be between 3 to 64 character!',
        'studentPass.required' => 'You forgot to enter your password!',
        'studentName.required' => 'You forgot to enter student name!',
        'studentAge.integer'   => 'Student age must be a integer value!',
        'studentAge.min'   => 'Student age must be a greater than 18 years!',
        'studentAge.max'   => 'Student age must be a less than value 45 years!'

    ); /* Add your custom messages here */
    $validator = Validator::make($input, $rules, $messages);
    if($validator->fails())
    {
        return Redirect::to('register')->withErrors($validator);
    }
    else
    {
        $student = new student();
        $student->username = $input['email'];
        $student->password = $input['studentPass'];
        $student->stdname  = $input['studentName'];
        $student->stdage   = $input['studentAge'];
        $student->save();
        return Redirect::to('login');
    }
}
Run Code Online (Sandbox Code Playgroud)

登录

public function post_index()
{
    $input = Input::all();
    $rules = array(
        'email' => 'required|email|Between:3, 64',
        'studentPass' => 'required');

    $messages = array(
        'email.required' => 'You forgot to enter your email id!',
        'email.between'  => 'Email must be between 3 to 64 character!',
        'studentPass.required' => 'You forgot to enter your password!'
    ); /* Add your custom messages here */

    $validator = Validator::make($input, $rules, $messages);

    if($validator->fails())
    {
        return Redirect::to('login')->withErrors($validator);
    }
    else
    {
        $credential = array('username' => $input['email'], 'password' => $input['studentPass']);
        $auth = Auth::attempt($credential);
        if(Auth::attempt($credential))
            return Redirect::to('index');
        else
            return Redirect::to('/');
    }
}
Run Code Online (Sandbox Code Playgroud)

Ban*_*shi 5

在您的注册页面中,使用HASH插入您的密码.将代码写为

public function post_register()
{
    $input = Input::all();
    $rules = array(
        'email' => 'required|email|Between:3, 64|unique:student,username',
        'studentPass' => 'required',
        'studentName' => 'required',
        'studentAge'  => 'integer|Min:18|Max:45');
    $messages = array(
        'email.required' => 'You forgot to enter your email id!',
        'email.between'  => 'Email must be between 3 to 64 character!',
        'studentPass.required' => 'You forgot to enter your password!',
        'studentName.required' => 'You forgot to enter student name!',
        'studentAge.integer'   => 'Student age must be a integer value!',
        'studentAge.min'   => 'Student age must be a greater than 18 years!',
        'studentAge.max'   => 'Student age must be a less than value 45 years!'

    );//Add your custom messages here
    $validator = Validator::make($input, $rules, $messages);
    if($validator->fails())
    {
        return Redirect::to('register')->withErrors($validator);
    }
    else
    {
        $password = Hash::make($input['studentPass']);
        $student = new student();
        $student->username = $input['email'];
        $student->password = $password;
        $student->stdname  = $input['studentName'];
        $student->stdage   = $input['studentAge'];
        $student->save();
        return Redirect::to('login');
    }
}
Run Code Online (Sandbox Code Playgroud)

在Laravel密码必须在HASH中.我想在更换函数post_register()之后,你的登录验证将正常工作.