首页 文章

laravel 5.2在自定义身份验证上将登录会话数据插入数据库

提问于
浏览
11

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

2 回答

  • 0

    它应该发生在中间件中,而不是在提供者中 .

    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 lifecycle .

  • 7

    我使用这段代码来获取会话(当时正在进行研发) . 我认为这对你很有帮助 .

    $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];
    

相关问题