diff --git a/app/templates/login.html b/app/templates/login.html
index b8eb118..b0806b6 100644
--- a/app/templates/login.html
+++ b/app/templates/login.html
@@ -15,6 +15,10 @@
             alert('输入不能为空!');
             return false;
         }
+        if (password.includes(' ')) {
+            alert('输入不能包含空格!');
+            return false;
+        }
         $.post(
             "/login", {'username': username, 'password': password},
             function (response) {
diff --git a/app/templates/reset.html b/app/templates/reset.html
index 3425c97..408e001 100644
--- a/app/templates/reset.html
+++ b/app/templates/reset.html
@@ -12,6 +12,10 @@
                 alert('输入不能为空!');
                 return false;
             }
+            if (old_password.includes(' ') || new_password.includes(' ')) {
+                alert('输入不能包含空格!');
+                return false;
+            }
             if (new_password !== re_new_password) {
                 alert('新密码不匹配,请重新输入');
                 return false;
diff --git a/app/templates/signup.html b/app/templates/signup.html
index 5b3aafe..6b5db6e 100644
--- a/app/templates/signup.html
+++ b/app/templates/signup.html
@@ -16,6 +16,10 @@ You're logged in already! <a href="/logout">Logout</a>.
                 alert('输入不能为空!');
                 return false;
             }
+            if (password.includes(' ') || password2.includes(' ')) {
+                alert('输入不能包含空格!');
+                return false;
+            }
             if (password !== password2) {
                 alert('确认密码与输入密码不一致!');
                 return false;
diff --git a/app/test/test_bug528_tangjiao.py b/app/test/test_bug528_tangjiao.py
new file mode 100644
index 0000000..802423c
--- /dev/null
+++ b/app/test/test_bug528_tangjiao.py
@@ -0,0 +1,95 @@
+import pytest
+from selenium import webdriver
+from selenium.webdriver.common.by import By
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.support import expected_conditions as EC
+from selenium.common.exceptions import NoSuchElementException, TimeoutException
+
+
+# 测试登录页面输入密码包含空格的情况
+def test_login_password_with_space(driver, URL):
+    try:
+        driver.get(URL+"/login")
+
+        # 输入用户名
+        username_elem = driver.find_element_by_id('username')
+        username_elem.send_keys("test_user")
+
+        # 输入包含空格的密码
+        password_elem = driver.find_element_by_id('password')
+        password_elem.send_keys("password with space")
+
+        # 提交登录表单
+        elem = driver.find_element_by_class_name('btn')  # 找到提交按钮
+        elem.click()
+
+        # 显式等待直到警告框出现
+        WebDriverWait(driver, 10).until(EC.alert_is_present())
+
+        # 检查是否弹出警告框
+        alert = driver.switch_to.alert
+        assert "输入不能包含空格!" in alert.text
+    except (NoSuchElementException, TimeoutException) as e:
+        pytest.fail("页面元素未找到或超时: {}".format(e))
+
+
+# 测试注册页面输入密码包含空格的情况
+
+def test_signup_password_with_space(driver, URL):
+    try:
+        driver.get(URL+"/signup")
+
+        # 输入用户名
+        username_elem = driver.find_element_by_id('username')
+        username_elem.send_keys("new_user")
+
+        # 输入包含空格的密码
+        password_elem = driver.find_element_by_id('password')
+        password_elem.send_keys("password with space")
+
+        # 再次输入密码
+        password2_elem = driver.find_element_by_id('password2')
+        password2_elem.send_keys("password with space")
+
+        # 提交注册表单
+        elem = driver.find_element_by_class_name('btn')  # 找到提交按钮
+        elem.click()
+
+        # 显式等待直到警告框出现
+        WebDriverWait(driver, 10).until(EC.alert_is_present())
+
+        # 检查是否弹出警告框
+        alert = driver.switch_to.alert
+        assert "输入不能包含空格!" in alert.text
+    except (NoSuchElementException, TimeoutException) as e:
+        pytest.fail("页面元素未找到或超时: {}".format(e))
+
+
+
+# 测试重设密码页面输入新密码包含空格的情况
+
+def test_reset_password_with_space(driver, URL):
+    try:
+        driver.get(URL+"/reset")
+
+        # 输入用户名
+        username_elem = driver.find_element_by_id('username')
+        username_elem.send_keys("test_user")
+
+        # 输入包含空格的密码
+        password_elem = driver.find_element_by_id('password')
+        password_elem.send_keys("password with space")
+
+        # 提交重设密码表单
+        elem = driver.find_element_by_class_name('btn')  # 找到提交按钮
+        elem.click()
+
+        # 显式等待直到警告框出现
+        WebDriverWait(driver, 10).until(EC.alert_is_present())
+
+        # 检查是否弹出警告框
+        alert = driver.switch_to.alert
+        assert "输入不能包含空格!" in alert.text
+    except (NoSuchElementException, TimeoutException) as e:
+        pytest.fail("页面元素未找到或超时: {}".format(e))