![](/img/trans.png)
[英]Laravel 5.2 Auth always redirect to login page (maybe session not persisting)
[英]laravel 5.2 Insert login session data to database on custom auth
我在laravel 5.2中有一个自定义身份验证登录,我的自定义登录配置是
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'provider' => [
'driver' => 'session',
'provider' => 'providers',
],
],
我有两个auth控制器,一个是laravel AuthController,另一个是ProviderAuthController。 我在我的env中设置了SESSION_DRIVER =数据库,并在我的数据库中创建了一个会话表我从Web登录获取会话但问题是我无法获得提供者登录的会话。 是否有任何解决方法在提供程序登录上插入会话。
我的应用服务提供商中没有任何内容
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
我的providerAuthcontroller的路由是Route :: group(['prefix'=>'provider'],function(){
Route::get('login', 'Auth\ProviderAuthController@showLoginForm');
Route::post('login', 'Auth\ProviderAuthController@login');
Route::get('logout', 'Auth\ProviderAuthController@logout');
// Registration Routes...
Route::get('register', 'Auth\ProviderAuthController@showRegistrationForm');
Route::post('register', 'Auth\ProviderAuthController@register');
// Password Reset Routes...
Route::get('password/reset/{token?}', 'Auth\ProviderPasswordController@showResetForm');
Route::post('password/email', 'Auth\ProviderPasswordController@sendResetLinkEmail');
Route::post('password/reset', 'Auth\ProviderPasswordController@reset');
它应该发生在中间件中,而不是在提供者中。
Route::get('profile', function () {
// Only authenticated users may enter...
})->middleware('auth');
和
class Auth
{
public function handle(\Illuminate\Http\Request $request, Closure $next)
{
if(!$request->session()->get('authenticated'){
throw AuthException();
}
return $next($request);
}
}
还要检查laravel生命周期 。
我用这段代码来获取会话(当时正在进行R&D)。 我认为这对你很有帮助。
$req = $request->session()->all();
$req = collect($req);
$req = $req->filter(function($item,$key){
return strripos($key,'web_');
});
$key = $req->keys()->first();
$session = explode('login_web_', $key)[1];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.