poirot / authsystem
此包的最新版本(dev-devel)没有可用的许可证信息。
服务管理容器。
dev-devel
2019-07-16 19:26 UTC
Requires
- poirot/std: dev-devel
- poirot/storage: dev-devel
Suggests
- poirot/http: To Handle Request Aware Authentication Like Digest.
This package is auto-updated.
Last update: 2024-09-17 06:29:33 UTC
README
使用PSR-7接口进行HTTP身份验证。
它使用PSR-7接口实现,用于请求和响应类,这些类将读取身份验证请求值并生成必要的响应。
单独的类实现了基于文件的用户和密码记录数据库的用户身份验证。
它提供了类来检查用户是否已经登录,并在他没有登录的情况下进行身份验证。
概要使用示例
$request = new HttpRequest(new PhpServerRequestBuilder); $response = new HttpResponse(new PhpServerResponseBuilder); $lazyLoad = new LazyFulfillmentIdentity(['fulfillment_by' => 'username', 'data_provider' => new UserData]); $auth = new Authenticator\HttpSessionAuth([ 'identity' => $lazyLoad, 'request' => $request, 'response' => $response, ]); try { $credential = null; ## check user has authenticated login_user: $auth->authenticate($credential); echo 'Continue ...'; if (!$auth->isSignIn()) { $auth->signIn(); header('Location: '.$request->getUri()->getPath()->toString()); die(); } } catch (WrongCredentialException $e) { throw new \Exception('Invalid Username or Password.'); } catch (UserNotFoundException $e) { throw new \Exception('Invalid Username or Password.'); } catch (AuthenticationException $e) { if ($e->getAuthenticator() instanceof Authenticator\HttpSessionAuth) { ### handle login with satisfy request if ($request->plg()->methodType()->isPost()) { $credential = new UserPassCredential($request->plg()->phpServer()->getPost()); goto login_user; } ### challenge user with login form, redirection or etc. $response->setBody(' <form method="post" action="" enctype="application/x-www-form-urlencoded"> <input type="text" name="email"> <input type="password" name="password"> <input type="submit" value="send"> </form> <p>Please Login ...</p> '); } } ## run rest of program if ($auth->hasAuthenticated()) { $response->setBody("<h1>Hello User {$auth->identity()->getEmail()}</h1>"); } ### send response $response->flush();
待办事项
- 聚合身份验证器
- 聚合适配器
- 在适配器之上编写应用程序调度控制的身份验证服务层