dongnuo6310 2017-01-20 09:47
浏览 58

缓存API用户凭据

I have this code running on every HTTP request:

if ($request->header('Authorization')) {
    $token = $request->header('Authorization');
    $user = User::where('api_token', $token)->whereRaw("`api_token_expires` >= CURDATE()")->active()->first();
    if ($user) {
        $GLOBALS['user_id'] = $user->id;
        $GLOBALS['is_admin'] = $user->admin;
        return $next($request);
    }
}

As you can see, I'm hitting the database for every request looking for a valid API token.

What's a more efficient - but safe, best practice - way of handling this? Should I be looking at MySQL caching? Redis or something else?

EDIT: I'm not using sessions, this is a stateless API.

  • 写回答

1条回答 默认 最新

  • dongxing1412 2017-01-20 09:57
    关注

    You can make api-users authorize first and respond with a session token.

    Then they can use this session token for each next request.

    You can store these sessions in the $_SESSION variable, on disk in a file or on a fast database like Redis.

    To do this securely I would remove old sessions automatically, check the session token against it's origin IP, and force https for the api.

    评论

报告相同问题?

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题