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");