【问题标题】:check the status is active or not in middleware检查中间件中的状态是否处于活动状态
【发布时间】:2020-03-02 16:30:56
【问题描述】:

我有一个名为agents 的表,我想在代理尝试登录时签入middleware,代理是否处于活动状态

public function handle($request, Closure $next)
   {
      $user = $this->auth->user();

      if(agentmodel::where('status') == 'active'){
           true;
      }else{
           false;
      }
}

【问题讨论】:

  • 在那里回答了你自己的问题
  • 实际上这段代码在中间件中不起作用
  • 您收到任何错误消息吗?
  • 不发送任何错误

标签: php mysql laravel laravel-middleware


【解决方案1】:

您必须在中间件中返回请求才能继续

public function handle($request, Closure $next)
{
    // Declared but not used
    $id = auth()->id();
    // If agent belongs to a user
    if (App\agentmodel::where('user_id', $id)->first()->status == 'active') {
        return $next($request);
    }
    \Session::flush();
    return back()->with('error', 'Your account is not active');
}

如果代理不活动,这将重定向回来并且不允许用户继续

【讨论】:

  • 不工作和$user = auth()->user(); m 使用它来检查管理员与否
  • 您正在将活动用户重定向回来。
  • 不,如果不活跃 m 做 \Session::flush(); 并返回错误消息,例如您的帐户未活跃
  • 已更新,是的,好像接受的答案就是这样做的。辉煌
【解决方案2】:
public function handle($request, Closure $next)
{
      $user = $this->auth->user();
      $agent = AgentModel::where("status", "active")->get();

      if(count($agent) > 0) {
           return $next($request);
      } else {
           return back();
      }
}

【讨论】:

  • @Ogreucha 我只想正确更新条件。让我更新我的答案
  • @SokChanty 你怎么知道当前用户是否活跃?你只是在计算活跃的代理。
猜你喜欢
  • 1970-01-01
  • 2020-01-11
  • 2019-12-10
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2012-06-02
相关资源
最近更新 更多