Итак, я дошел до того, что начинаю биться головой об стену с этой проблемой, я пытался поискать в поиске решения, но на всех страницах просто говорится «Включить токен CSRF», который я включил..
Маршрут использует промежуточное программное обеспечение по умолчанию для веб-сайтов.
Токен CSRF включен
Я нахожусь на этом остроумие, так что любойРуководство высоко ценится.
Используя новейший Laravel 5.7, все компоненты обновлены
JS Сценарий:
<script>
export default {
name: "BankIdLogin",
data() {
return {
status: '',
error: '',
message: '',
}
},
created() {
},
methods: {
initiateBankID: function (e) {
e.preventDefault();
e.stopPropagation();
axios
.post(
"/login/bankIdAuthentication", {
_token: $('meta[name="csrf-token"]').attr('content'),
ssn: $('#ssn').val()
}
)
.then(res => res.json())
.then(res => console.log(res));
},
collectBankID() {
}
}
}
</script>
Ответ на вызов:
{
"message":"",
"exception":"Symfony\\Component\\HttpKernel\\Exception\\HttpException",
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line":204,
"trace":[
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line":176,
"function":"prepareException",
"class":"Illuminate\\Foundation\\Exceptions\\Handler",
"type":"->"
},
{
"file":"/var/www/html/app/Exceptions/Handler.php",
"line":51,
"function":"render",
"class":"Illuminate\\Foundation\\Exceptions\\Handler",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":83,
"function":"render",
"class":"App\\Exceptions\\Handler",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":55,
"function":"handleException",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php",
"line":49,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\View\\Middleware\\ShareErrorsFromSession",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php",
"line":63,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Session\\Middleware\\StartSession",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php",
"line":37,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php",
"line":66,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Cookie\\Middleware\\EncryptCookies",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":104,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"line":681,
"function":"then",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"line":656,
"function":"runRouteWithinStack",
"class":"Illuminate\\Routing\\Router",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"line":622,
"function":"runRoute",
"class":"Illuminate\\Routing\\Router",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
"line":611,
"function":"dispatchToRoute",
"class":"Illuminate\\Routing\\Router",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"line":176,
"function":"dispatch",
"class":"Illuminate\\Routing\\Router",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":30,
"function":"Illuminate\\Foundation\\Http\\{closure}",
"class":"Illuminate\\Foundation\\Http\\Kernel",
"type":"->"
},
{
"file":"/var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php",
"line":65,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Barryvdh\\Debugbar\\Middleware\\InjectDebugbar",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/fideloper/proxy/src/TrustProxies.php",
"line":57,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Fideloper\\Proxy\\TrustProxies",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"line":31,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
"line":31,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
"line":27,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
"line":62,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":151,
"function":"handle",
"class":"Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line":53,
"function":"Illuminate\\Pipeline\\{closure}",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line":104,
"function":"Illuminate\\Routing\\{closure}",
"class":"Illuminate\\Routing\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"line":151,
"function":"then",
"class":"Illuminate\\Pipeline\\Pipeline",
"type":"->"
},
{
"file":"/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"line":116,
"function":"sendRequestThroughRouter",
"class":"Illuminate\\Foundation\\Http\\Kernel",
"type":"->"
},
{
"file":"/var/www/html/public/index.php",
"line":54,
"function":"handle",
"class":"Illuminate\\Foundation\\Http\\Kernel",
"type":"->"
}
]
}
web.php
Route::post('/login/bankIdAuthentication', 'Api\LoginController@bankidAuthentication');
BankIDController.php:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\BankidSignature;
use App\Models\User;
use Frozzare\Personnummer\Personnummer;
use ILabs\Api\BankId;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends BaseController
{
public function bankidAuthentication(Request $request)
{
$ssn = Personnummer::format($request->post('ssn'), TRUE) ?? $request->post('ssn');
if ($ssn === '')
$ssn = $request->post('ssn');
if ($ssn !== '') {
$user = User::where(
[
'ssn' => $ssn,
'active' => 1,
]
);
if (!$user->count()) {
return \GuzzleHttp\json_encode(['status' => 0, 'message' => __('INVALID_SSN')]);
}
$bankid = new BankId();
try {
$bankid->bankIDAuthenticationRequest($ssn);
session(['ssn' => $ssn]);
} catch (\Exception $e) {
return \GuzzleHttp\json_encode(['status' => 0, 'message' => $e->getMessage()]);
}
}
return \GuzzleHttp\json_encode(['status' => 0, 'message' => 'Unknown Error']);
}
}
РЕДАКТИРОВАТЬ Отключение CSRF в промежуточном веб-ПО обеспечивает правильную работу маршрута, поэтомуэто как-то связано с CSRF ...
Кажется, что _token, предоставленный функцией, не соответствует _token в сеансе (Не знаю, должны ли они совпадать или они связаны друг с другом в другомway) Пример:
_token from request: wiqBYqBdtMJL9JxInySSSBGtYzPGHAjePLNBILRz
_token in session: e5caPLy6N82QEQoUzixHAvojE2SortRKqxOFM3sI
Заголовки запроса
РЕДАКТИРОВАТЬ 2 После дополнительных исследований я пришел к выводу, что моя проблема в том, что вызовы Ajax, похоже, начинают свой собственный новый сеанс ... во многом как описано здесь Laracast - _tokenне совпадает с сеансом _token
Однако я не смог заставить его работать с любыми исправлениями, которые они поставили в этом потоке.
РЕДАКТИРОВАТЬ 3
Я больше не знаю, что происходит, я сделал коммит своих изменений и теперь он работает ..