当我在本地调用此API时,它工作正常并返回值。但是当我在服务器上部署之后调用这些API时,总是需要返回令牌密钥。我也从数据库中输入准确的令牌密钥。
这是我为每个用户设置的令牌功能。
private function randomDigit($length, $count)
{
$codes = [];
$stringDigits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
while (count($codes) < $count) {
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString = (string)$randomString . substr($stringDigits, rand(0, strlen($stringDigits) - 1), 1);
}
if (!in_array($randomString, $codes)) {
$codes[] = (string)$randomString;
}
}
return $codes;
}
这就是我的路线。
Route::group(['middleware' => 'token'], function (){
Route::get('/api/users', 'UserController@apiUsers')->name('api.users');
Route::get('/api/user/{id}/show', 'UserController@apiUserShow')->name('api.user.show');
Route::delete('/api/logout', 'UserController@apiLogout')->name('api.logout');
Route::post('/api/user/{id}/state', 'UserController@apiState')->name('api.state');
Route::get('/api/user/{id}/getstate', 'UserController@apiGetState')->name('api.getState');
Route::get('/api/fetch', 'UserController@apiFetch')->name('api.fetch');
Route::get('/api/init', 'UserController@apiInit')->name('api.init');
Route::post('/api/user/{id}/present', 'UserController@apiPresent')->name('api.present');
Route::get('/api/user/{id}/retrieve', 'UserController@apiRetrieve');
Route::get('/api/user/{id}/getattand', 'UserController@apiGetAttend')->name('api.getAttand');
});
答案 0 :(得分:1)
您实际上只是在重新创建Laravel已经开箱即用的功能。
您应该在api.php
上注册您的API路线。在您的users
表格中,确保您有api_token
列。此列是一个60个字符的长随机字符串。当您的用户注册时,您可以使用str_random(60)
填写api_token。
在api.php
中,这就是它的样子:
Route::group(['middleware' => 'auth:api'], function () {
Route::get('/fetch', 'MyAwesomeController@someFunction');
Route::get('/user', function (Request $request) {
return $request->user();
});
});
// the above will then create http://example.com/api/fetch route
// and http://example.com/api/user
然后,在你做出这些改变之后,就是这样。
// below will return the authenticated user using the api_token`
GET - http://example.com/api/user?api_token=XXXXXXX
GET - http://example.com/api/fetch?api_token=XXXXXXXXX
答案 1 :(得分:0)
最后它现在有效。实际上问题不在于代码错误!这是因为nginx配置。由于这个原因,nginx无法获取get请求。 我将nginx配置中的这行代码更改为
location / {
try_files $uri $uri/ /index.php$query_string;
}
喜欢这个
location / {
try_files $uri $uri/ /index.php$is_args$args;
}