JellyBool

17773 经验值

我去看一下,官方有没有更新package。容我瞅瞅

貌似代码没啥问题。这个可能是以下原因引起的:

  1. 你的api_key和private_key没设置对

  2. GeeTest抽风了

  3. 网络问题

你有在header部分引入这个不?

  <script src="http://api.geetest.com/get.php"></script>

https://laravist.com/series/what-is-new-in-laravel-5-2-series/episodes/4

首先,你可以看看上面的视频,注册/登录的背后其实就是register/login这两个方法,register位于AuthController里面的RegistersUsers,login位于AuthController的AuthenticatesUsers中,你在AuthController重写这些方法就好了,随意你怎么携带提示信息。

OK,恩,我看了一下源码和最新的文档,这个确实是token的认证 #_#!

然后至于重写,我大概可以想到下面的思路:

protected function getTokenForRequest()
    {
        $token = $this->request->input($this->inputKey);
      /*
    这里面的$this->inputKey写死为 api_token,那么如果你想用header的形式的话,
    其实就是换一下这一句就差不多,
    比如 $token = $this->request->header('LARAVEL-API-TOKEN');
 */

        if (empty($token)) {
            $token = $this->request->bearerToken();
        }

        if (empty($token)) {
            $token = $this->request->getPassword();
        }

        return $token;
    }

以上的注释部分你可以参考一下,这时候注意,这个LARAVEL-API-TOKEN是你自定义的一个key,你得跟使用你api的客户商议好,这个key用什么。然后你的客户在调用你的api的时候,必须提供这个header。有啥想法继续交流

你图片当中的应该是后去form表单的_token这个的,就是用于CSRF防护的这个。

首先,我假设你给用户签发一个token,然后你在数据库维护一个相对应的token,然后,你看看laravel的实现:

protected function tokensMatch($request)
    {
        $sessionToken = $request->session()->token();

        $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

        if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
            $token = $this->encrypter->decrypt($header);
        }

        if (! is_string($sessionToken) || ! is_string($token)) {
            return false;
        }

        return hash_equals((string) $request->session()->token(), (string) $token);
    }

然后你把这里的session换成你的sql查询应该差不多了

你可以自定义header撒,然后要求用户在请求的时候必须携带这个token,例子可以参考laravel的X-CSRF-TOKEN或者Ping++的X-Pingplusplus-Signature