1

我是 Laravel 的新手,正在尝试制作一个非常简单的登录表单。

此表格有一个“记住我”复选框。我尝试使用实现它的功能,Cookie::make()但事实证明我需要返回 aResponse才能保存它。

当我检查存储localhost在浏览器中的 cookie 时,我没有找到名为username. 我做了一些研究,结果发现我必须将 cookie 附加到 aResponse然后返回它。

问题是,我不想返回一个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);
    }
}

我的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');
4

1 回答 1

5

你应该查看 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 的方法进行身份验证,因为它会处理密码提醒等等。

于 2013-08-31T19:09:02.850 回答