Solo un detalle el ejemplo que estas colocando no es de L5.1 si no de la versión 5.2.
El middleware es auth:api no api.auth o api:auth.
El middlewae en cuestion esta indicado en el kernel como:
'auth' => \App\Http\Middleware\Authenticate::class.
Código PHP:
Ver originalnamespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
}
Si te das cuenta pasa un parámetro
$guard el cual le dice al mecanismo de autenticación de laravel que forma va usar para evaluar si ya hiciste login, para el ejemplo tu al middlware le pasas el parámetro api que sera el mecanismo que utilizara. Por defecto ese mecanismo solo compara como credenciales un token que previamente ya debes de tener guardado. Si quieres ver como funciona el api guard puede ver el código en el repositorio oficial:
https://github.com/laravel/framework...TokenGuard.php