我想用laravel创建Web服务,但我不这样做。
我使用这样的路线:
Route::group(array('prefix' => 'api/v1', 'before' => 'basic.outh'), function(){
Route::resource('url', 'UrlController@index');
Route::resource('show', 'UrlController@show');
Route::resource('destroy', 'UrlController@destroy');
});
但是这个路由过滤器只想要用户名,如下所示:
Route::filter('auth.basic', function()
{
return Auth::basic("username");
});
我想让我的系统像Codeigniter RESTful api一样。这可能吗?
你能给我推荐一些例子吗?
答案 0 :(得分:6)
是的,绝对有可能。
就个人而言,我建议使用OAuth2进行基于令牌的身份验证,这更适合于API。 OAuth有一个相当陡峭的学习曲线,但幸运的是,Laravel(一个OAuth2包装器)有一个包非常简单,因为它会为你生成和验证令牌。
<强>封装强>
https://github.com/lucadegasperi/oauth2-server-laravel
示例:强>
我有类似的设置。下面的代码并不意味着要通过文档替换,但这类似于使用此包装器的路径。
Route::group(['prefix' => 'api/v1', 'before' => 'apiErrors'], function()
{
// Returns a valid token based on grant_type and credentials when a request is made to the accessToken endpoint.
// I use 'client_credentials' and 'refresh_token' for APIs serving mobile apps, for example. You can use that, or roll your own.
Route::post('accessToken', function()
{
return AuthorizationServer::performAccessTokenFlow();
});
// 'oauth' filter makes sure there is a valid token present
Route::group(['before' => 'oauth'], function()
{
// Your protected endpoints
Route::resource('url', 'UrlController@index');
Route::resource('show', 'UrlController@show');
Route::resource('destroy', 'UrlController@destroy');
});
});