首页 文章

使用外部验证的Laravel 5.2登录不会持久存在

提问于
浏览
1

登录我正在使用带有外部验证用户凭据的laravel,在Auth :: user()中存储的重定向数据不存在且Auth :: check()= false,但会话数据保存正确 . 登录后,如果我进入仪表板,我会重定向到登录 . routes.php文件

Route::group(['middleware' => ['web']], function () {
    Route::get('/test', [
        'as' => 'test',
        function () {
            echo "Session------>";
            var_dump(\Illuminate\Support\Facades\Session::get('user'));//Returns user data
            echo "User------>";
            var_dump(\Illuminate\Support\Facades\Auth::user());// Returns null
            echo "\ncheck user.------->";
            var_dump(\Illuminate\Support\Facades\Auth::check());//Returns false
        }
    ]);
});
//Login
Route::group(['middleware' =>[ 'web']], function () {
    Route::get('/login',                    ['as' => 'login',           'uses' => 'AuthController@login']);
    Route::post('/login',                   ['as' => 'login',           'uses' => 'AuthController@loginpost']);

    Route::get('/logout',                    ['as' => 'logout',           'uses' => 'AuthController@logout']);
});

Route::group(['middleware' => ['auth', 'web']], function () {
    Route::get('/',                         ['as' => 'home',           'uses' => 'DashboardController@index']);
    //Dashboard
    Route::get("/dashboard",                ['as' => 'dashboard',       'uses' => 'DashboardController@index']);
}

AuthController.php

class AuthController extends Controller
{
    public function login()
    {
        return view('auth/login');
    }

    public function loginpost(LoginRequest $request)
    {
        $credentials = $request->only('username', 'password');
        $loginRequest = new LoginUserRequest($credentials['username'], md5($credentials['password']));
        $userRepo     = new MongoUserRepository();
        $service      = new GetUserByCredentialsService($userRepo, $loginRequest);
        $authUser     = $service->handle(new UserObjectPresenter());
        var_dump($authUser);
        if (isset($authUser)) {

            $us           = new User();
            $us->id       = $authUser->id;
            $us->email    = $authUser->email;
            $us->fullname = $authUser->fullname;
            Auth::login($us);
            $user = Auth::user();
            Session::put('user', $user);
            Session::save();
            echo "----saved user------";
            var_dump(Auth::user()); //Returns correct user data

            echo "Auth::check()->";
            var_dump(Auth::check()); //Returns true
            return redirect()->route('test');
        } else {
            return redirect()->route('login')->withInput()->withErrors(['Invalid email or password.']);
        }
    }
}

$ service-> handle(new UserObjectPresenter());如果登录正确,则返回null或用户数据 .

2 回答

  • 0

    登录后使用Auth :: attempt我们实际开始你的会话,否则Auth :: check总是返回false,使用下面的代码

    $userdata = array(
                          'email'     => Input::get('email'),
                          'password'  => Input::get('password')
                     ); 
    
                        if (Auth::attempt($userdata)) {
                                    return view('dashboard');
                        }
    
  • 0

    你不是't passing an '现有'用户记录到 Auth::login . 它没有id,因此无法在下一个请求时撤回 .

    保存该用户记录或使用现有记录传递给 Auth::login

相关问题