我已经用多个表在laravel-4.2中实现了multiple,因此我的登录视图发布了3个值,第一个是用户名,第二个是密码,第三个是下拉列表中的值,它与Auth::<3rd Value>()->attempt的值相同,它帮助我登录请求的表,并假设如果第三个值为null,那么Auth::user()->attempt就开始使用了。对于多个方面,我使用的是'ollieread‘pakage,实现代码是
auth.php:
<?php
return array(
'multi' => array(
'BSc' => array(
'driver' => 'database',
'table' => 'bsc',
'model' => 'BSc'
),
'user' => array(
'driver' => 'eloquent',
'model' => 'User',
'table' => 'users'
)
),
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
);在过滤器中编辑:
Route::filter('students', function()
{
if (Auth::BSc()->guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::guest('/'); }
}
});
Route::filter('auth.basic', function()
{
if (Auth::user()->guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::guest('/'); }
}
});UserController@postLogin:
public function postLogin()
{
$username = Input::get('username');
$model_name = Input::get('course');
$password = Input::get('password'),
$credentials = array(
'username' => $username,
'password' => $password,
);
//class exists(Model exist?)
if(!(is_null($model_name))){
if(class_exists($model_name)){
if(Auth::$model_name()->attempt($credentials))
{
return Redirect::to('desk')->with('stream',$model_name);
}
else
{
echo "Invalid UserName";
}
}else{
echo "No model is created for ".$model_name;
}
}else{
if(Auth::user()->attempt($credentials)){
return Redirect::intended('desktop')->with('stream',"Test");
}
else{
echo "Username is invalid";
}
}在postLogin函数中,在重定向到路由“书桌”时,我将变量$model_name传递给会话存储,这将帮助我知道用户是从哪个表中,
首次在登录后重定向到/desk时,$model_name显示正确的传递值,我在桌面视图中检索该值,
<?php
$stream = Session::get('stream');
var_dump($stream);
?>现在,它转储与重定向一起传递的正确值,但当我刷新页面时,值将变为null。
如果我能够设置这个值直到用户注销,它将有助于使用该$stream值进行注销。
还可用于:
Auth::$stream()->username那么,如何设置会话::get(‘stream’)值常量直到用户注销?希望我解释得对。
发布于 2016-03-27 08:05:11
为了存储会话值,您可以使用laravel 4的会话外观,如下所示:
//class exists(Model exist?)
if(!(is_null($model_name))){
if(class_exists($model_name)){
if(Auth::$model_name()->attempt($credentials))
{
Session::put('stream', $model_name);
return Redirect::to('desk');
}
else
{
echo "Invalid UserName";
}
}else{
echo "No model is created for ".$model_name;
}
}else{
if(Auth::user()->attempt($credentials)){
return Redirect::intended('desktop')->with('stream',"Test");
}
else{
echo "Username is invalid";
}
}该值将保留在会话中,名称(key) 'stream‘,直到您使用会话::遗忘(’key‘)或会话::刷新()(可以在注销函数中使用)。您也可能喜欢通过此页。
我希望这能解决你的问题。如果没有的话请告诉我。
https://stackoverflow.com/questions/36239771
复制相似问题