quick_login_test.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 快速登录测试
  5. 尝试不同的登录方式
  6. """
  7. import requests
  8. import json
  9. def test_login_methods():
  10. """测试不同的登录方式"""
  11. base_url = "http://localhost:8080"
  12. # 方式1: 标准登录(无加密)
  13. print("🔓 测试方式1:标准登录(无加密)")
  14. try:
  15. login_data = {
  16. "tenantId": "000000",
  17. "username": "admin",
  18. "password": "admin123",
  19. "clientId": "e5cd7e4891bf95d1d19206ce24a7b32e",
  20. "grantType": "password"
  21. }
  22. headers = {
  23. 'Content-Type': 'application/json;charset=utf-8',
  24. 'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
  25. 'referer': 'http://localhost/login?redirect=%252Findex',
  26. }
  27. response = requests.post(f"{base_url}/auth/login", json=login_data, headers=headers)
  28. print(f" 状态码: {response.status_code}")
  29. print(f" 响应: {response.text[:200]}...")
  30. if response.status_code == 200:
  31. result = response.json()
  32. if result.get('code') == 200:
  33. print(" ✅ 登录成功!")
  34. token = result.get('data', {}).get('access_token')
  35. if token:
  36. print(f" 🎫 Token: {token[:50]}...")
  37. return token
  38. except Exception as e:
  39. print(f" ❌ 异常: {str(e)}")
  40. # 方式2: 尝试不同的clientid
  41. print("\n🔓 测试方式2:默认clientid")
  42. try:
  43. login_data = {
  44. "username": "admin",
  45. "password": "admin123"
  46. }
  47. headers = {
  48. 'Content-Type': 'application/json',
  49. }
  50. response = requests.post(f"{base_url}/auth/login", json=login_data, headers=headers)
  51. print(f" 状态码: {response.status_code}")
  52. print(f" 响应: {response.text[:200]}...")
  53. except Exception as e:
  54. print(f" ❌ 异常: {str(e)}")
  55. # 方式3: 尝试表单提交
  56. print("\n🔓 测试方式3:表单提交")
  57. try:
  58. login_data = {
  59. "username": "admin",
  60. "password": "admin123",
  61. "tenantId": "000000"
  62. }
  63. headers = {
  64. 'Content-Type': 'application/x-www-form-urlencoded',
  65. }
  66. response = requests.post(f"{base_url}/auth/login", data=login_data, headers=headers)
  67. print(f" 状态码: {response.status_code}")
  68. print(f" 响应: {response.text[:200]}...")
  69. except Exception as e:
  70. print(f" ❌ 异常: {str(e)}")
  71. # 方式4: 尝试获取公钥再登录
  72. print("\n🔓 测试方式4:获取公钥")
  73. try:
  74. response = requests.get(f"{base_url}/auth/publicKey")
  75. print(f" 获取公钥状态码: {response.status_code}")
  76. print(f" 公钥响应: {response.text[:200]}...")
  77. except Exception as e:
  78. print(f" ❌ 异常: {str(e)}")
  79. # 方式5: 检查验证码
  80. print("\n🔓 测试方式5:检查验证码要求")
  81. try:
  82. response = requests.get(f"{base_url}/auth/captcha")
  83. print(f" 验证码状态码: {response.status_code}")
  84. print(f" 验证码响应: {response.text[:200]}...")
  85. except Exception as e:
  86. print(f" ❌ 异常: {str(e)}")
  87. def test_without_auth():
  88. """测试不需要认证的接口"""
  89. print("\n📊 测试无需认证的接口")
  90. base_url = "http://localhost:8080"
  91. endpoints = [
  92. "/",
  93. "/health",
  94. "/actuator/health",
  95. "/swagger-ui.html",
  96. "/doc.html"
  97. ]
  98. for endpoint in endpoints:
  99. try:
  100. response = requests.get(f"{base_url}{endpoint}")
  101. print(f" {endpoint}: {response.status_code}")
  102. if response.status_code == 200:
  103. print(f" 内容类型: {response.headers.get('content-type', 'unknown')}")
  104. except Exception as e:
  105. print(f" {endpoint}: 异常 - {str(e)}")
  106. if __name__ == "__main__":
  107. print("🔍 快速登录测试")
  108. print("="*50)
  109. test_login_methods()
  110. test_without_auth()