小编gvh*_*een的帖子

Laravel TestCase不发送授权头(JWT令牌)

摘要

我们正在编写单元测试来测试JWT令牌的创建和失效,并在每次尝试JWTAuth ::令牌无效时从JWTException接收"令牌无法从请求中解析"错误.

描述

在我们的控制器内部,要创建用户令牌,我们将通过用户电子邮件地址,然后返回JWT令牌.

之后,我们通过使用invalidateToken方法使令牌失效并通过发送Authorization标头来传递令牌来销毁令牌.

public function invalidateToken()
{
    try {
        JWTAuth::invalidate(JWTAuth::getToken());
        return Response::json(['status' => 'success'], 200);
    } catch (JWTException $e) {
        return Response::json(['status' => 'error', 'message' => $e->getMessage()], 401);
    }
}
Run Code Online (Sandbox Code Playgroud)

这通过使用Postman以及PHPStorms Restful客户端完美地工作.

当我们尝试为此方法编写测试时,我们面临错误响应和"无法从请求中解析令牌"错误消息.

我们的测试如下:

public function testInvalidateToken()
{
    $createUserToken = $this->call('POST', '/token/create', ['email' => 'test@test.com']);
    $user = $this->parseJson($createUserToken);

    $response = $this->call('POST', '/token/invalidate',
        [/* params */], [/* cookies */], [/* files */], ['HTTP_Authorization' => 'Bearer '.$user->token]);

    // var_dump($user->token);
    // die();

    $data = $this->parseJson($response);
    $this->assertEquals($data->status, 'success');
    $this->assertEquals($data->status, '200');
} …
Run Code Online (Sandbox Code Playgroud)

php phpunit testcase laravel-5

7
推荐指数
2
解决办法
4524
查看次数

LinkedIn oauth 2.0 (REST) 在 Apple 设备上使用 Ionic 框架

我正在尝试通过在我的混合应用程序上对他们进行身份验证来检索 LinkedIn 用户的个人资料信息。

我尝试使用 REST api,但我无法在 LinkedIn 上注册重定向 URL 以使其正常工作。

来自:https : //developer.linkedin.com/documents/authentication

我用了:

https://www.linkedin.com/uas/oauth2/authorization?response_type=code
&client_id=YOUR_API_KEY
&scope=r_basicprofile%20r_emailaddress
&state=STATE
&redirect_uri=YOUR_REDIRECT_URI
Run Code Online (Sandbox Code Playgroud)

...但是因为 iPhone 上的应用程序安装了唯一的 URL,所以我无法在 LinkedIn 上将其注册为重定向 URL。

我也尝试使用 javascript API,但无法动态加载页面以使按钮正确显示和解析。

来自:https : //developer.linkedin.com/documents/javascript-api-tutorial

有没有人找到不同的解决方案来在 Ionic 或任何其他混合应用程序上实现它?

提前致谢。

linkedin angularjs ionic-framework

2
推荐指数
1
解决办法
3063
查看次数

拦截Laravel路由

我正忙于在Laravel 5.1中构建Restful API,其中API版本通过标头传递.这样我就可以对功能进行版本控制,而不是复制和粘贴整个路径组并增加版本号.

我遇到的问题是我想要版本化的方法,IE:

public function store_v1 (){  }
Run Code Online (Sandbox Code Playgroud)

我在路由中添加了一个中间件,我从头部捕获了版本,但现在需要修改请求以从控制器中选择正确的方法.

应用程序/ HTTP/routes.php文件

Route::group(['middleware' => ['apiversion']], function()
{
    Route::post('demo', 'DemoController@store');
}
Run Code Online (Sandbox Code Playgroud)

应用程序/ HTTP /中间件/ ApiVersionMiddleware.php

public function handle($request, Closure $next)
{
    $action = app()->router->getCurrentRoute()->getActionName();

    //  dd($action)
    //  returns "App\Http\Controllers\DemoController@store"
}
Run Code Online (Sandbox Code Playgroud)

从这里开始,我会将标题版本附加到$ action,然后通过$ request传递它,以便它到达正确的方法.

嗯,无论如何这就是理论.

关于如何将行动注入路线的任何想法?

php laravel laravel-routing laravel-5 laravel-middleware

2
推荐指数
1
解决办法
1463
查看次数