laravel5.2如何做api服务

发布于 2022-09-06 00:37:13 字数 1184 浏览 25 评论 0

  目前项目laravel框架版本是5.2,php版本是5.6,想要做个api服务供其他端请求数据,看了下passport是需要php7版本的,然后翻了下5.2文档有个无状态的HTTP基本认证AuthenticateOnceWithBasicAuth,按照文档简单的两段代码试着配了运行下,发现授权不通过也可以访问。。

public function handle($request, Closure $next)
{
    return Auth::onceBasic() ?: $next($request);
    
    // 下面这种方式也不会提示授权
    $r = Auth::onceBasic();
    /* 打印这个$r出来的是 
      #content: "Invalid credentials."
      #version: "1.0"
      #statusCode: 401
      #statusText: "Unauthorized"
      */
    if (!Auth::onceBasic()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest('login');
        }
    }

    return $next($request);
}

  然后跟踪到了IlluminateAuthSessionGuard.php,有个getBasicCredentials函数,看着像是要传递用户名密码的,偶然有一次弹出了浏览器的输入密码账号界面(应该就是这样来授权了。。),输完后可以访问,但是清了cookie什么的再刷新直接出来结果页了,没有输密码界面。
  如果是这种直接传账号密码或者传个token的验证模式的话,似乎不是很安全啊,之前没用laravel的时候api调用话按照类似oauth那种拼参数拼token升序然后md5什么的实现的,但是这项目限制,没法装passport插件,想问下有兼容laravel5.2.45,php5.6.13的用于api服务的插件嘛或者直接把拼参数拼token升序MD5那一套拿过来在中间件里验证,似乎不太优雅?谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文