В моем приложении L4 я использую поддомены для моей маршрутизации для разных вещей.
accounts.domain.com = where alle the Authentication stuff happens dashboard.domain.com = The main frontpage for authenticated users community.domain.com = Community stuff for authenticated users.
Если кто-то посещает community.domain.com/forum и не получает его, он должен быть отправлен на accounts.domain.com, войти, а затем перенаправить обратно на форум.
Но теперь у меня есть 2 проблемы. 1 и главная проблема: подтвердите логин, пользователь авторизуется только для домена: accounts.domain.com для всех других доменов, которые он перенаправляет на логин. Если пользователь настроен автоматически и пытается получить доступ к dashboard.domain.com, он перенаправляется на страницу входа.
и проблема 2. – это перенаправление после входа в систему. Atm, у меня только есть статичное перенаправление после входа в систему, неважно, откуда пришел пользователь. Как я могу изменить его, чтобы он перенаправлялся обратно на страницу, которую он пытался посетить как не прошедший проверку пользователя? Мой файл маршрутов:
Route::get('login', function() { return Redirect::action('AccountsController@getLogin'); }); Route::group(array('domain' => 'accounts.domain.com'), function() { Route::get('/', function() { return Redirect::action('AccountsController@getLogin'); }); Route::get('users/sing_in', array('as' => 'login', 'uses' => 'AccountsController@getLogin')); Route::post('users/sing_in', array('as' => 'login', 'uses' => 'AccountsController@doLogin')); Route::get('users/sing_out', array('as' => 'logout', 'uses' => 'AccountsController@doLogout')); Route::group(array('before' => 'auth'), function() { Route::get('users/profile', array('as' => 'profile', 'uses' => 'AccountsController@getProfile')); }); }); Route::group(array('domain' => 'dashboard.domain.com'), function() { Route::group(array('before' => 'auth'), function() { Route::get('/', array('as' => 'dashhome', 'uses' => 'DashboardController@getIndex')); //If someone tries to access this, he get redirected to the login page, even if he just authenticated himself }); });
И мой контроллер входа:
public function getLogin() { if (Auth::check()) { return Redirect::action('AccountsController@getProfile'); } else { return View::make('login.index'); } } public function doLogin() { $rules = array( 'email' => 'required|email', 'password' => 'required|min:3' ); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::route('login') ->withErrors($validator) ->withInput(Input::except('password')); } else { $userdata = array( 'email' => Input::get('email'), 'password' => Input::get('password') ); if (Auth::attempt($userdata)) { return Redirect::action('AccountsController@getProfile'); } else { return Redirect::route('login')->withErros('Wrong E-mail address or Password'); } } } public function doLogout() { Auth::logout(); // log the user out of our application return Redirect::route('login'); // redirect the user to the login screen }
изpublic function getLogin() { if (Auth::check()) { return Redirect::action('AccountsController@getProfile'); } else { return View::make('login.index'); } } public function doLogin() { $rules = array( 'email' => 'required|email', 'password' => 'required|min:3' ); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::route('login') ->withErrors($validator) ->withInput(Input::except('password')); } else { $userdata = array( 'email' => Input::get('email'), 'password' => Input::get('password') ); if (Auth::attempt($userdata)) { return Redirect::action('AccountsController@getProfile'); } else { return Redirect::route('login')->withErros('Wrong E-mail address or Password'); } } } public function doLogout() { Auth::logout(); // log the user out of our application return Redirect::route('login'); // redirect the user to the login screen }
Спасибо за любую помощь.
Установите domain
в app/config/session.php
на .domain.com
, чтобы сеанс делился между субдоменами.
Чтобы перенаправить пользователя, вы можете вернуть Redirect::back()
или Redirect::route(<wherever the user should land>)
.