我使用角度ui作为单独的包,对于后端我使用laravel后端。现在如果我绕过laravel中的csrf令牌我可以处理来自单独的角度包的post请求但是为了安全性我将不得不使用csrf在发布请求。我没有使用中间件。任何人都可以在这方面帮助我吗?
答案 0 :(得分:0)
根据我的知识:Tern off laravel默认令牌行为,通过评论中间件行(正如您已经做过的那样)。
不要害怕这一点,因为您可以使用jwt-auth将令牌与请求一起传递给使用jwt-auth附带的中间件来保护您的请求/ API。您可以从here获取更多详细信息。
答案 1 :(得分:-1)
您可以在Laravel中创建一个返回CSRF令牌的API,例如:
Route::get('api/token', function() {
return Session::token();
});
当然,您需要在控制器或中间件等上添加验证。例如在控制器中:
public function list() {
if (Session::token() != $request->header('X-Csrf-Token') )
return Response::json('CSRF does not match', 400);
// Other code
}
在您的angularjs代码中,您可以获取令牌并将其注册为常量,并且可以将所有angularjs HTTPRequest注入到api中:
var xhRequest = new XMLHttpRequest();
xhRequest.open("GET", "api.yourdomain.com/api/token", false);
xhRequest.send(null);
app.constant("CSRF_TOKEN", xhRequest.responseText);
app.run(['$http', 'CSRF_TOKEN', function($http, CSRF_TOKEN) {
$http.defaults.headers.common['X-Csrf-Token'] = CSRF_TOKEN;
}]);