Laravel 登录和注册:HTTP 基础认证
HTTP 基础认证
HTTP 基础认证 提供了一种快速方法来验证你应用程序中的用户,而无需设置专用的「登录」页面。 开始之前, 先把 auth.basic
中间件 附加到你的路由中。auth.basic
中间件已包含在 Laravel 框架中,所以你不需要定义它:
Route::get('profile', function () {
// 只有认证过的用户可以进入...
})->middleware('auth.basic');
将中间件附加到路由后,在浏览器中访问此路由时将自动提示您输入凭据。默认的,auth.basic
中间件把用户记录上的 email
字段 作为「用户名」。
FastCGI 的注意事项
如果你正使用 PHP FastCGI 模式,HTTP 基础认证可能无法正常工作。需要把下面几行添加到你的 .htaccess
文件中:
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
无状态 HTTP 基础认证
你也可以使用 HTTP 基础身份验证,而无需在会话中设置用户标识符 cookie,这对 API 的身份验证特别有用。为此 ,请定义一个中间件 它将调用 onceBasic
方法。如果 onceBasic
方法没有返回任何响应,那么请求就可以进一步传递到应用程序中:
<?php
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
class AuthenticateOnceWithBasicAuth
{
/**
* 处理传入的请求
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, $next)
{
return Auth::onceBasic() ?: $next($request);
}
}
接着, 注册路由中间件 并将它附加到路由:
Route::get('api/user', function () {
// 只有认证过的用户可以进入...
})->middleware('auth.basic.once');