Laravel - 登录后重定向回登录页面
Posted
技术标签:
【中文标题】Laravel - 登录后重定向回登录页面【英文标题】:Laravel - Redirect back to login page after login 【发布时间】:2016-09-09 13:28:01 【问题描述】:登录后,laravel 不断重定向到登录页面。没有错误,什么都没有,它只是再次进入登录页面。也没有错误日志。
这是登录视图的主体:
<body>
<div class="wrapper-page" >
<div class="panel panel-color panel-primary panel-pages">
<div class="panel-heading bg-img">
<div class="bg-overlay"></div>
<h3 class="text-center m-t-10 text-white"> Sign In to <strong>My App</strong> </h3>
</div>
<div class="panel-body">
<form class="form-horizontal m-t-20" role="form" method="POST" action=" url('/auth/login') ">
!!csrf_field()!!
<div class="form-group $errors->has('email') ? ' has-error' : '' ">
<div class="col-xs-12">
<input class="form-control input-lg" name="email" type="text" required="required" value=" old('email') " placeholder="E-mail Address">
@if ($errors->has('email'))
<span class="help-block">
<strong> $errors->first('email') </strong>
</span>
@endif
</div>
</div>
<div class="form-group $errors->has('password') ? ' has-error' : '' ">
<div class="col-xs-12">
<input class="form-control input-lg" name="password" type="password" required="required" placeholder="Password">
@if ($errors->has('password'))
<span class="help-block">
<strong> $errors->first('password') </strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<div class="checkbox checkbox-primary">
<input id="checkbox-login" type="checkbox" name="remember">
<label for="checkbox-login">
Remember me
</label>
</div>
</div>
</div>
<div class="form-group text-center m-t-40">
<div class="col-xs-12">
<button class="btn btn-primary btn-lg w-lg waves-effect waves-light" type="submit">Log In</button>
</div>
</div>
</form>
</div>
</div>
</div>
这些是授权路线:
Route::group(['middleware' => ['web']], function ()
Route::group(['prefix' => 'auth'], function ()
Route::get('login', 'Auth\AuthController@getLogin');
Route::post('login', 'Auth\AuthController@postLogin');
Route::get('logout', 'Auth\AuthController@getLogout');
);
);
这是 AuthController.php:
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use App\Http\Controllers\Auth\Session;
class AuthController extends Controller
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectAfterLogout = '/auth/login';
protected $redirectTo = '/clients';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
这是配置/session.php:
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "array"
|
*/
'driver' => 'database',
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => 120,
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => null,
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => 'myapp_session',
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => "http://myapp.com",
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/
'secure' => false,
];
这是 postLogin 方法,我们没有更改:
/**
* Handle a login request to the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postLogin(Request $request)
return $this->login($request);
/**
* Handle a login request to the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function login(Request $request)
$this->validateLogin($request);
// If the class is using the ThrottlesLogins trait, we can automatically throttle
// the login attempts for this application. We'll key this by the username and
// the IP address of the client making these requests into this application.
$throttles = $this->isUsingThrottlesLoginsTrait();
if ($throttles && $lockedOut = $this->hasTooManyLoginAttempts($request))
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
$credentials = $this->getCredentials($request);
if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember')))
return $this->handleUserWasAuthenticated($request, $throttles);
// If the login attempt was unsuccessful we will increment the number of attempts
// to login and redirect the user back to the login form. Of course, when this
// user surpasses their maximum number of attempts they will get locked out.
if ($throttles && ! $lockedOut)
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
我认为会话存在问题,但数据库工作正常,它记录会话,我不知道如何解决这个问题。非常感谢。
【问题讨论】:
尝试更改 session.php 中的域(如果你没有),使用你当前的域 我正在使用我当前的域,但它不起作用。 【参考方案1】:在您的会话配置中,您使用'driver' => 'database',
但是'connection' => null,
是null
如果您使用数据库驱动程序,则需要指定连接
你可以在config/database.php
找到他们
这会导致会话未存储,因此用户在登录后未经过身份验证。
还要确保您已经在数据库中创建了用于存储会话的表
【讨论】:
我将连接更改为'mysql'
,但没有任何改变。我也尝试了其他驱动程序,但我知道数据库可以工作并且它存储会话,我可以看到它们。以上是关于Laravel - 登录后重定向回登录页面的主要内容,如果未能解决你的问题,请参考以下文章