From 6e4faf08656a9f9b0154404811d497beb9ec494b Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 8 Aug 2022 10:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=8D=E8=BE=93=E5=85=A5=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/UserWebAuthnController.php | 7 +++-- resources/js/webauthn.js | 24 +++++++++++++++-- resources/views/user/login.blade.php | 3 +++ resources/views/user/webauthn/login.blade.php | 26 +++++++++++++++++++ routes/web.php | 1 + 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 resources/views/user/webauthn/login.blade.php diff --git a/app/Http/Controllers/UserWebAuthnController.php b/app/Http/Controllers/UserWebAuthnController.php index 37c4555..a2e03c5 100644 --- a/app/Http/Controllers/UserWebAuthnController.php +++ b/app/Http/Controllers/UserWebAuthnController.php @@ -32,9 +32,13 @@ use Webauthn\TokenBinding\IgnoreTokenBindingHandler; class UserWebAuthnController extends BaseController { - private $TIMEOUT = 45000; private $attestationStatementSupportManager = null; + public function webauthn_login(Request $request) + { + return view("user.webauthn.login"); + } + public function register_options(Request $request): PublicKeyCredentialCreationOptions { $userEntity = new PublicKeyCredentialUserEntity( @@ -58,7 +62,6 @@ class UserWebAuthnController extends BaseController PublicKeyCredentialRequestOptions::USER_VERIFICATION_REQUIREMENT_REQUIRED ); $publicKeyCredentialRequestOptions->allowCredentials([]); - $publicKeyCredentialRequestOptions->setTimeout($this->TIMEOUT); return $publicKeyCredentialRequestOptions; } diff --git a/resources/js/webauthn.js b/resources/js/webauthn.js index 2f99e3f..a4a0be2 100644 --- a/resources/js/webauthn.js +++ b/resources/js/webauthn.js @@ -10,5 +10,25 @@ const webauthn_login = useLogin({ optionsUrl: "/login/webauthn/options", }) -window.webauthn_register = webauthn_register -window.webauthn_login = webauthn_login +window.webauthn_register = webauthn_register; +window.webauthn_login = webauthn_login; +(function() { + const loginForm = window.document.getElementById("webauthn_login_form"); + console.log(loginForm) + if (loginForm) { + loginForm.addEventListener("submit", function (e) { + e.preventDefault(); + const formData = new FormData(loginForm) + webauthn_login(formData) + .then(() => { + // 成功登录 + window.location.href = "/" + }) + .catch((err) => { + console.error(err) + alert("登录失败"); + }) + return false; + }) + } +})() diff --git a/resources/views/user/login.blade.php b/resources/views/user/login.blade.php index 78f317d..ab7578a 100644 --- a/resources/views/user/login.blade.php +++ b/resources/views/user/login.blade.php @@ -25,6 +25,9 @@ @include("common.form_error")
+ + 免输入登录Alpha +
@include("common.footer") diff --git a/resources/views/user/webauthn/login.blade.php b/resources/views/user/webauthn/login.blade.php new file mode 100644 index 0000000..d5f9269 --- /dev/null +++ b/resources/views/user/webauthn/login.blade.php @@ -0,0 +1,26 @@ + + + + WebAuthn登录 + + + + + +@include("common.header") +
+
登录
+ @csrf + + @include("common.form_error") +
+ +
+
+@include("common.footer") + + + diff --git a/routes/web.php b/routes/web.php index 936f336..f783c89 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,7 @@ Route::post('/upload', ["\\App\\Http\\Controllers\\FileController","upload"]); // 用户部分 Route::get('/login', ["\\App\\Http\\Controllers\\UserController", "login_page"])->name("login"); Route::post('/login', ["\\App\\Http\\Controllers\\UserController", "authenticate"])->name("login.submit"); +Route::get('/login/webauthn/', ["\\App\\Http\\Controllers\\UserWebAuthnController", "webauthn_login"])->name("login.webauthn"); Route::post("/login/webauthn/options", ["\\App\\Http\\Controllers\\UserWebAuthnController", "login_options"])->name("login.webauthn.options"); Route::post("/login/webauthn/", ["\\App\\Http\\Controllers\\UserWebAuthnController", "login_validate"])->name("login.webauthn.submit"); Route::get('/register', ["\\App\\Http\\Controllers\\UserController", "register_page"])->name("register");