摘要
我们正在编写单元测试来测试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) 我正在尝试通过在我的混合应用程序上对他们进行身份验证来检索 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 或任何其他混合应用程序上实现它?
提前致谢。
我正忙于在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传递它,以便它到达正确的方法.
嗯,无论如何这就是理论.
关于如何将行动注入路线的任何想法?