首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个表会话设置的Laravel Multi-Aiuth,直到用户注销。

具有多个表会话设置的Laravel Multi-Aiuth,直到用户注销。
EN

Stack Overflow用户
提问于 2016-03-26 19:18:00
回答 1查看 727关注 0票数 0

我已经用多个表在laravel-4.2中实现了multiple,因此我的登录视图发布了3个值,第一个是用户名,第二个是密码,第三个是下拉列表中的值,它与Auth::<3rd Value>()->attempt的值相同,它帮助我登录请求的表,并假设如果第三个值为null,那么Auth::user()->attempt就开始使用了。对于多个方面,我使用的是'ollieread‘pakage,实现代码是

auth.php:

代码语言:javascript
复制
    <?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,
    ),
);

在过滤器中编辑:

代码语言:javascript
复制
    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:

代码语言:javascript
复制
 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显示正确的传递值,我在桌面视图中检索该值,

代码语言:javascript
复制
<?php
$stream = Session::get('stream');
var_dump($stream);   
?>

现在,它转储与重定向一起传递的正确值,但当我刷新页面时,值将变为null。

如果我能够设置这个值直到用户注销,它将有助于使用该$stream值进行注销。

还可用于:

代码语言:javascript
复制
Auth::$stream()->username

那么,如何设置会话::get(‘stream’)值常量直到用户注销?希望我解释得对。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-27 08:05:11

为了存储会话值,您可以使用laravel 4的会话外观,如下所示:

代码语言:javascript
复制
//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‘)或会话::刷新()(可以在注销函数中使用)。您也可能喜欢通过此页

我希望这能解决你的问题。如果没有的话请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36239771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档