Laravel Auth :: check()仅在帖子页面返回true

时间:2014-01-17 12:09:52

标签: authentication laravel laravel-4

我是Laravel的新手,在简单的登录和授权页面上遇到了一些困难。 我跟随了一个由laracasts.com提供的精彩视频教程(相信那个,非常有用)。

我的情况:
对我的页面实施授权时,登录后的页面成功进行授权检查。 所以:loginform>按下按钮>您现在已登录。

我的问题:
按下后退按钮并刷新后,它仍会显示登录表单。它不应该。

routes.php文件

<?php

Route::get('login', 'SessionsController@create');

Route::get('logout', 'SessionsController@destroy');

Route::resource('users', 'UsersController');

Route::resource('sessions', 'SessionsController');

Route::get('admin', function(){
    return 'Admin page';
})->before('auth');



Route::get('dashboard', ['before' => 'auth', function(){

    return 'Dashboard';
}]);

SessionsController.php:

<?php

class SessionsController extends BaseController{


    public function create()
    {

        if ( Auth::check() )
        {
            Redirect::to('/admin');
        }


        return View::make('sessions.create');
    }


    public function store()
    {
        if( Auth::attempt(Input::only('email', 'password')) )
        {
            // if(Auth::check())
            // {
            //  return 'check worked!';
            // }
            return 'Welcome ' . Auth::user()->username; //You are now logged in
        }

        return 'Failed';
    }

    public function destroy()
    {
        Auth::logout();

        return Redirect::to('sessions.create');
    }
}

User.php

<?php

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    public $timestamps = true;


    protected $fillable = ['username', 'email', 'password'];
    protected $guarded = ['id'];

    public static $rules = [
        'username' => 'required',
        'password' => 'required'

    ];

    public $errors;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');

    /**
     * Get the unique identifier for the user.
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Get the password for the user.
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->password;
    }

    /**
     * Get the e-mail address where password reminders are sent.
     *
     * @return string
     */
    public function getReminderEmail()
    {
        return $this->email;
    }


    public function isValid()
    {

        $validation = Validator::make($this->attributes, static::$rules );

        if($validation->passes() )
            return true;

        $this->errors = $validation->messages();
        return false;


    }

}

create.blade.php

@extends('layouts.default')
@section('content')


    <h1>Create new user</h1>


    {{Form::open([ 'route' => 'users.store' ]) }}

        <div>
            {{Form::label('username', 'Username: ')}}
            {{Form::text('username')}}
            {{$errors->first('username')}}

        </div>

        <div>
            {{Form::label('password', 'Password: ')}}
            {{Form::password('password')}}
            {{$errors->first('password')}}

        </div>

        <div>
            {{Form::submit('Create User')}}
        </div>

    {{Form::close() }}
@stop

可以这么说:它永远不会进入'管理'路线。

2 个答案:

答案 0 :(得分:1)

您的身份验证代码正确且有效。你所拥有的是Laravel应用程序,Web服务器甚至PHP的任何其他部分都出了问题。

由于我们没有看到您的所有代码,我们可以猜测,所以我的第一个是会话没有正确存储。当前记录的用户存储在Laravel会话中。因此,检查您的会话驱动程序,如果它是“本机”,则将其更改为“数据库”,但您必须创建会话表,查看文档。如果您已经在使用“数据库”,请将其更改回“本机”甚至“文件”。

答案 1 :(得分:-1)

而不是运行

 return 'Welcome ' . Auth::user()->username; //You are now logged in

请尝试

 return Redirect::to('admin');