Laravel - 登录任何页面

时间:2014-04-03 23:43:29

标签: authentication laravel laravel-4

当我查看用户登录的Laravel文档和教程时,他们都有一个单独的login.php视图来处理这个问题。我正在学习如何创建电子商务/购物车网站。我想要做的是在侧面栏上显示未登录用户访问的每个页面上的登录表单。

由于登录部分的全局性,我对如何路由这个感到困惑。

//AccountController.php

class AccountController extends BaseController {

public function signIn()
{
    $rules = array(
        'email'=>'required|email',
        'password'=> 'required'
        );

    $validation = Validator::make(Input::all(), $rules);

    if($validation->fails())
    {
        return Redirect::back()->with('message','Incorrect username and/or password');
        ->withErrors($validation)
        ->withInput(Input::except('password'));
    }
    else{

        $user = array(
            'email'     => Input::get('email'),
            'password'  => Input::get('password')
        );

                    // login user
        Auth::attempt($user)
        return Redirect::back();
    }
}
 }


这是我的观点中的表格:

//views/layouts/master.blade.php

{{ Form::open(array('action' => 'AccountController@signIn')) }}
{{ Form::label('email', 'Email address: ') }} 
{{ Form::text('email', Input::old('email')) }}
<br />
{{ Form::label('password','Password') }}
{{ Form::password('password') }}
<br />
{{ Form::submit('Login', array('class'=> 'btn btn-info')) }}
{{Form::close() }}



为此表单设置路由的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这是一种方式:

Route::post('/signin', 'AccountController@signIn');

并且,要检查用户当前是否已登录,如果他/她不是,请显示登录表单,您的表单可能会更改为:

@if( ! Auth::check())
    {{ Form::open(array('action' => 'AccountController@signIn')) }}
        {{ Form::label('email', 'Email address: ') }} 
        {{ Form::text('email', Input::old('email')) }}
        <br />
        {{ Form::label('password','Password') }}
        {{ Form::password('password') }}
        <br />
        {{ Form::submit('Login', array('class'=> 'btn btn-info')) }}
    {{Form::close() }}
@endif