Реализация функции «Запомнить меня» с помощью Laravel 4

Я новичок в Laravel, пытаюсь сделать очень простую форму входа.

В этой форме есть флажок «Запомнить меня». Я попытался реализовать его функциональность, используя Cookie::make(), но оказалось, что мне нужно вернуть Response, чтобы сохранить его.

Когда я проверяю файлы cookie, сохраненные от localhost, в своем браузере, я не нахожу файл cookie с именем username. Я провел некоторое исследование, и оказалось, что я должен прикрепить файл cookie к Response, а затем вернуть его.

Проблема в том, что я не хочу возвращать Response !!

Я еще не дошел до Auth класса в процессе обучения. Так что решение без использования этого класса было бы более подходящим.

Вот мой код:

public function processForm(){
    $data = Input::all();
    if($data['username'] == "rafael" & $data['password'] == "123456"){
        if(Input::has('rememberme')){
            $cookie = Cookie::make('username', $data['username'], 20);
        }
        Session::put('username', $data['username']);
        return Redirect::to('result');
    } else {
        $message_arr = array('message' => 'Invalid username or password!');
        return View::make('signup', $message_arr);
    }
}

My signup.blade.php :

@extends('layout')

@section('content')
    @if(isset($message))
        <p>Invalid username or password.</p>
    @endif
    <form action="{{ URL::current() }}" method="post">
        <input type="text" name="username"/>
        <br>
        <input type="text" name="password"/>
        <br>
        <input type="checkbox" name="rememberme" value="true"/>
        <input type="submit" name="submit" value="Submit" />
    </form>
@stop

routes.php :

Route::get('signup', 'ActionController@showForm');

Route::post('signup', 'ActionController@processForm');

Route::get('result', 'ActionController@showResult');

person Rafael Adel    schedule 31.08.2013    source источник


Ответы (1)


Вы должны проверить документацию Laravel 4 по аутентификации пользователей, которую можно найти по адресу:

http://laravel.com/docs/security#authenticating-users

По сути, вы можете аутентифицировать пользователя, передав $data в Auth::attempt(). Передайте true в качестве второго параметра Auth::attempt(), чтобы запомнить пользователя для будущих входов в систему:

$data = Input::all();

if (Auth::attempt($data, ($data['rememberme'] == 'on') ? true : false)
    return Redirect::to('result');
else
{
    $message_arr = array('message' => 'Invalid username or password!');
    return View::make('signup', $message_arr);
}

Вы должны использовать метод Laravel для аутентификации, так как он позаботится о напоминаниях пароля и многом другом.

person ehp    schedule 31.08.2013