我目前正在使用Laravel 5(.4)构建某种基于帖子的Web应用程序。我决定异步加载每个帖子的评论部分(并定期刷新)。经过一些研究后,我决定编写一个小的集成 REST API (使用 Laravel的api路由)来回答通过 AJAX 。
但是,如果验证传入的请求,我将面临问题。以请求发表评论为例。你究竟怎么建议这样做?
答案 0 :(得分:0)
" Passport包含一个身份验证防护,可以验证传入请求的访问令牌。一旦配置了api guard以使用护照驱动程序,您只需要在需要有效访问令牌的任何路由上指定auth:api中间件" - 来自Laraven文档。
显然我必须配置护照,然后配置auth:api中间件以使用护照驱动程序。如果我错了,请纠正我,请:)
答案 1 :(得分:0)
如果您要从浏览器发出AJAX请求并且您已登录,那么您不需要使用Laravel Passport令牌。
您可以定义某些路由,这些路由将像web
这样的请求使用auth
,webapi/comments/get
中间件。
Route::group(['middleware' => ['web','auth]], function () {
Route::get('webapi/comments/get', 'CommentsController@get');
}
并在网络请求中使用Auth
Facade,例如Auth::check(), Auth::user()
等,并以JSON格式返回数据。
class CommentsController extends Controller
{
public function get(Request $request)
{
if($request->acceptsJson()){
$data = array();
// add data
return response()->json([
"data"=> $data,
"status" => true
]);
}else{
return abort(404);
}
}
}
您还可以将Accept
标头作为application/json
发送到AJAX请求中,并在控制器中检查是否请求$request->acceptsJson()
,并决定在从浏览器地址栏加载网址或显示请求时显示内容作为AJAX。
Laravel Passport令牌在没有会话且管理cookie的情况下非常有用。
希望这有助于:)