我是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
可以这么说:它永远不会进入'管理'路线。
答案 0 :(得分:1)
您的身份验证代码正确且有效。你所拥有的是Laravel应用程序,Web服务器甚至PHP的任何其他部分都出了问题。
由于我们没有看到您的所有代码,我们可以猜测,所以我的第一个是会话没有正确存储。当前记录的用户存储在Laravel会话中。因此,检查您的会话驱动程序,如果它是“本机”,则将其更改为“数据库”,但您必须创建会话表,查看文档。如果您已经在使用“数据库”,请将其更改回“本机”甚至“文件”。
答案 1 :(得分:-1)
而不是运行
return 'Welcome ' . Auth::user()->username; //You are now logged in
请尝试
return Redirect::to('admin');