WeChat アプレットによるログイン機能の実現

バックエンドサーバーはCSDNで開設可能、価格もお得

[![CSDN 開発クラウド]( https://img-home.csdnimg.cn/images/20220518054835.png)](https://dev.csdn.net/activity?utm_source=sale_source&sale_source=q4AnCOkys7)

  1. ミニ プログラムを WeChat パブリック プラットフォームに登録し、AppID を取得します。

  1. ユーザー名、パスワード入力ボックス、ログイン ボタンを含むログイン ページをアプレットに作成します。

  1. HTTPS POST リクエストを介してバックエンド サーバーにユーザー名とパスワードを送信します。

  1. バックエンド サーバーは、ユーザー名とパスワードが正しいかどうかを検証し、正しい場合は、session_key を生成して返します。

  1. session_key を受け取った後、フロント エンドはそれをローカル ストレージに保存します。

  1. 認証のために session_key をバックエンド サーバーに送信します。

  1. 本人確認が成功すると、ユーザー情報がフロントエンドに返されます。ユーザー情報には、ユーザー ID、ニックネーム、アバターなどが含まれます。

// 前端代码
wx.request({
  url: 'https://example.com/api/login',
  method: 'POST',
  data: {
    username: 'example',
    password: 'password'
  },
  success: function (res) {
    wx.setStorageSync('session_key', res.data.session_key);
  },
  fail: function (res) {
    console.log('登录失败')
  }
})

// 后端代码
app.post('/api/login', function (req, res) {
  // 获取用户名和密码
  const { username, password } = req.body;
  // 在数据库中验证用户名和密码是否正确
  if (checkPassword(username, password)) {
    // 生成 session_key
    const session_key = uuid.v4();
    // 将 session_key 存储在数据库中
    saveSessionKey(username, session_key);
    // 返回 session_key
    res.json({ session_key: session_key });
  } else {
    res.status(401).send('用户名或密码错误');
  }
})

// 鉴权代码
app.get('/api/user', function (req, res) {
  // 从请求头中获取 session_key
  const session_key = req.headers['session-key'];
  // 验证 session_key 是否正确
  if (checkSessionKey(session_key)) {
    // 如果验证通过,返回用户信息
    const userInfo = getUserInfo(session_key);
    res.json(userInfo);
  } else {
    res.status(401).send('未授权访问');
  }
})

上記のコードのcheckPasswordsaveSessionKeycheckSessionKey、およびgetUserInfo関数は、実際の状況に応じて実装する必要があります。ログインに成功すると、 session_key はwx.setStorageSync を介してローカル ストレージに保存され、他のページで使用される場合はwx.getStorageSyncを介して session_key を取得できます。認証が必要なインターフェースでは、リクエストヘッダーからsession_keyを取得し、認証とユーザー情報の取得を行うことができます。

おすすめ

転載: blog.csdn.net/jackwu11/article/details/129001541