我在尝试什么?
我已经有了一个网站,我正在为相同代码的API尝试基于令牌的身份验证,以下是样本身份验证代码的开始
我在下面创建了一个控制器代码。
class AccountController extends \App\Http\Controllers\Controller
{
public function apilogin($UserData) {
return json_decode($UserData);
}
}
我的路线配置如下。
Route::group(['prefix' => 'api/v1', 'middleware' => 'auth.api'], function () {
Route::post('/apilogin', 'API\User\Account\AccountController@apilogin');
});
**然后从邮差Chrome扩展程序中,我发布了请求,并且如果我在Kernel.php中的$ middlewareGroups中评论以下行,则工作正常
\App\Http\Middleware\VerifyCsrfToken::class,
如果我从POSTMan Extension
执行GET请求,我没有问题VerifyCsrfToken答案 0 :(得分:7)
打开您的app\http\Middleware\VerifyCsrfToken.php
文件。
此处使用以下内容编辑$except
属性
protected $except = [
'api/*'
];
这将从CSRF验证中排除您的api路由。
答案 1 :(得分:0)
在你的route.php中设置代码
Route::group(['prefix' => API_PREFIX,'middleware' => 'auth.api'], function()
{
// Your Route
}
在你的kernal.php设置中间件下面,最好为api使用不同的中间件。
'auth.api' => \App\Http\Middleware\ApiAuthenticate::class,
添加新中间件 ApiAuthenticate.php
class ApiAuthenticate
{
public function handle($request, Closure $next, $guard = 'api')
{
if (\Auth::guard($guard)->guest()) {
return response("Invalid user");
}
else {
return $next($request);
}
return $next($request);
}
}
检查你的获取和发布方法
答案 2 :(得分:0)
TokenMismatchException通常在csrf标记不存在于表单或过期的csrf标记或篡改csrf标记时发生。
首先:
确保以表格
添加<input type="hidden" name="_token" value="{{ csrf_token() }}">
或
清除尝试使用清除缓存的视图文件
或
检查流程中是否有重定向
最后,如果您想要自定义此错误,则一切都会失败。您可以在hanlers中处理此错误。检查[this][1]