loginRsa.js 989 B

1234567891011121314151617181920212223242526272829303132333435
  1. import JSEncrypt from 'jsencrypt'
  2. import { API_BASE } from '@/config/api'
  3. function fetchLoginPublicKey() {
  4. const url = `${API_BASE}/mini/auth/login-rsa-public-key?_t=${Date.now()}`
  5. return new Promise((resolve, reject) => {
  6. uni.request({
  7. url,
  8. method: 'GET',
  9. success: (res) => resolve(res),
  10. fail: (err) => reject(err)
  11. })
  12. })
  13. }
  14. export async function buildMiniEncryptedLoginBody(username, password) {
  15. const keyRes = await fetchLoginPublicKey()
  16. const body = keyRes.data
  17. if (!body || body.code !== 200 || !body.data || !body.data.publicKeyPem) {
  18. throw new Error((body && body.message) || '获取登录公钥失败')
  19. }
  20. const crypt = new JSEncrypt()
  21. crypt.setPublicKey(body.data.publicKeyPem)
  22. const payload = JSON.stringify({
  23. username,
  24. password,
  25. ts: Date.now()
  26. })
  27. const encryptedLogin = crypt.encrypt(payload)
  28. if (!encryptedLogin) {
  29. throw new Error('登录加密失败,请重试')
  30. }
  31. return { encryptedLogin }
  32. }