我有以下问题:
创建用户并且用户确认了她的电子邮件后。 我希望用户登录, 我使用以下代码来执行此操作:
重定向::路由(' login-forward') - > with(' alert_message',...) 警报信息只是表明一切顺利,我希望她登录。
login-forward受一个运行实际登录表单的before过滤器保护, 当用户随后登录时,她将被带回登录转发,然后将用户放在她的个人登录页面上。
路由' login-forward的代码是:
Route::get('my-login', array(
'as' => 'login-forward',
'before' => 'auth',
function ()
{
$user = Auth::user();
switch ($user->role)
{
case 'Administrator':
return Redirect::route('admin_dashboard');
case 'FreeUser':
return Redirect::route('cs-dashboard');
default:
return Redirect::route('/');
}}));
问题是,> with(' alert_message',...)在前过滤器调用的真实登录路由中看不到。
我该如何解决这个问题?
答案 0 :(得分:1)
最好的方法是让用户在确认电子邮件时自动登录,如果用户确认帐户创建,那么当您发现该用户有效时,您可以使用以下内容登录该用户:
// $user = Get the user object
Auth::login($user);
您也可以使用:
Session::put('alert_message', ...);
Redirect::route('login-forward');
然后,当用户第一次登录时,只需使用以下内容从Session
获取消息:
// Get and show the alert_message
// from session and forget it
@if (Session::has('alert_message'))
{{ Session::pull('alert_message') }}
@endif
因此,当pull
来自Session
的消息显示该消息时,Session
中的消息将不再可用,或者您可以使用Session::reflash()来消息另一个后续请求的闪烁会话数据,直到您进入要显示该消息的页面。
答案 1 :(得分:0)
最佳选择是 - you can make forward to login form,无需从控制器方法重定向个人网页的网址。
return Route::dispatch(Request::create('login'))->getOriginalContent();