Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs melaksanakan log masuk Android

Nodejs melaksanakan log masuk Android

王林
王林asal
2023-05-25 14:45:37623semak imbas

Dalam pembangunan aplikasi mudah alih, log masuk pengguna adalah salah satu fungsi penting. Dalam pelanggan Android, pengesahan log masuk dengan meminta antara muka pelayan ialah kaedah pelaksanaan biasa. Di bahagian pelayan, perkhidmatan antara muka pengesahan log masuk mudah boleh dibina dengan cepat menggunakan Node.js. Artikel ini akan membantu pembaca memahami cara menggunakan Node.js untuk melaksanakan fungsi log masuk Android dengan memperkenalkan pengetahuan yang berkaitan dan kod sampel Node.js.

1. Pengenalan kepada Node.js

Node.js ialah persekitaran masa jalan JavaScript merentas platform Ia berdasarkan model acara I/O tak segerak dan boleh membina aplikasi web berskala Prestasi berprestasi tinggi dengan cepat. Node.js berasaskan enjin V8 dan melaksanakan mekanisme gelung peristiwa yang cekap dengan merangkum API I/O tak segerak yang disediakan oleh perpustakaan libuv, menjadikan Node.js berprestasi baik dalam mengendalikan sejumlah besar sambungan serentak dan beban kerja beban tinggi. Pada masa yang sama, Node.js juga menyediakan banyak perpustakaan standard dan modul pihak ketiga untuk memudahkan pembangun membina pelbagai aplikasi web, aplikasi pelayan, alat baris arahan dan aplikasi lain dengan cepat.

2. Proses log masuk Android

Sebelum memperkenalkan butiran pelaksanaan khusus Node.js untuk melaksanakan log masuk Android, mari kita susun dahulu proses asas log masuk Android:

  1. Pengguna membuka klien Android, mengklik butang log masuk, memasukkan nama pengguna dan kata laluan dan menyerahkan permintaan log masuk.
  2. Pelanggan menghantar maklumat log masuk seperti nama pengguna dan kata laluan ke pelayan melalui permintaan HTTP.
  3. Selepas menerima permintaan log masuk, pelayan mengesahkan nama pengguna dan kata laluan yang dimasukkan oleh pengguna Jika berjaya, ia mengembalikan token yang menunjukkan log masuk berjaya, jika tidak, ia mengembalikan mesej kegagalan log masuk.
  4. Selepas pelanggan menerima token untuk log masuk yang berjaya, ia menyimpannya secara setempat untuk permintaan seterusnya.
  5. Klien meminta antara muka API yang memerlukan pengesahan log masuk dengan membawa token Pelayan menentukan sama ada log masuk itu sah dengan mengesahkan token Jika ia sah, maklumat data yang sepadan akan dikembalikan ralat yang menunjukkan log masuk tidak sah atau tidak log masuk akan dikembalikan.

Menurut proses di atas, fungsi utama yang perlu kami laksanakan di bahagian pelayan ialah: menerima permintaan log masuk, mengesahkan maklumat pengguna, menjana dan memulangkan token, mengesahkan sama ada token itu sah, dsb.

3. Pelaksanaan Node.js contoh log masuk Android

Berikut ialah contoh kod untuk menggunakan Node.js untuk melaksanakan log masuk Android:

  1. Antara muka permintaan log masuk (login.js )
const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const secretKey = 'mySecretKey'; //Token加密密钥
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

//处理登录请求
app.post('/api/login', (req, res) => {
  const { username, password } = req.body;
  //TODO: 用户信息验证
  if (username === 'test' && password === '123456') {
    //生成AccessToken
    const payload = { username };
    const accessToken = jwt.sign(payload, secretKey, { expiresIn: '1h' });
    res.json({ code: 200, msg: '登录成功', accessToken });
  } else {
    res.json({ code: 401, msg: '用户名或密码错误' });
  }
});

const server = app.listen(3000, () => {
  console.log(`Server listening at http://${server.address().address}:${server.address().port}`);
});
  1. perisian tengah pengesahan token (auth.js)
const jwt = require('jsonwebtoken');
const secretKey = 'mySecretKey'; //Token加密密钥

//Token验证中间件
module.exports = (req, res, next) => {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1];
  if (token == null) {
    return res.status(401).json({ code: 401, msg: '未登录或Token已过期' });
  }
  jwt.verify(token, secretKey, (err, user) => {
    if (err) {
      return res.status(403).json({ code: 403, msg: 'Token验证失败' });
    }
    req.user = user;
    next();
  });
};
  1. Antara muka pengesahan log masuk (user.js)
const express = require('express');
const auth = require('./auth.js');
const app = express();

app.get('/api/user', auth, (req, res) => {
  const { username } = req.user;
  //TODO: 获取用户信息并返回
  res.json({ code: 200, msg: '获取用户信息成功', data: { username } });
});

const server = app.listen(3000, () => {
  console.log(`Server listening at http://${server.address().address}:${server.address().port}`);
});

Nota:

  • Dalam login.js, kami menggunakan rangka kerja Express untuk memproses permintaan HTTP, menerima permintaan log masuk melalui kaedah POST dan mengesahkan maklumat pengguna. Selepas berjaya mengesahkan maklumat pengguna, gunakan perpustakaan jsonwebtoken untuk menjana AccessToken dan mengembalikannya kepada klien sebagai data JSON.
  • Dalam auth.js, kami mentakrifkan perisian tengah pengesahan Token, yang digunakan untuk menyemak sama ada token dalam pengepala permintaan adalah sah apabila memproses permintaan antara muka API yang memerlukan pengesahan log masuk. Jika token telah tamat tempoh atau ralat berlaku dalam penyahsulitan token, mesej ralat yang sepadan akan dikembalikan.
  • Dalam user.js, kami mentakrifkan antara muka API yang memerlukan pengesahan log masuk, yang menggunakan perisian tengah pengesahan Token yang ditakrifkan di atas. Jika pengesahan log masuk berjaya, anda boleh mendapatkan maklumat pengguna log masuk melalui req.user, kemudian dapatkan maklumat pengguna yang berkaitan melalui bahagian TODO dan mengembalikannya kepada klien sebagai data JSON.

4. Cara melaksanakan permintaan log masuk dalam klien Android

Dalam klien Android, anda boleh menggunakan perpustakaan permintaan HTTP untuk membuat permintaan HTTP ke antara muka log masuk. Selepas menerima token untuk log masuk yang berjaya, simpannya dalam SharedPreferences untuk digunakan oleh antara muka lain yang memerlukan pengesahan log masuk. Berikut ialah kod sampel mudah untuk menggunakan perpustakaan OkHttp3 untuk melaksanakan permintaan log masuk:

private void login(String username, String password) {
  OkHttpClient client = new OkHttpClient();
  MediaType JSON = MediaType.parse("application/json; charset=utf-8");
  JSONObject requestBody = new JSONObject();
  try {
    requestBody.put("username", username).put("password", password);
  } catch (JSONException e) {
    e.printStackTrace();
  }
  RequestBody body = RequestBody.create(JSON, requestBody.toString());
  Request request = new Request.Builder()
    .url("http://your-server-host/api/login")
    .post(body)
    .build();
  client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
      e.printStackTrace();
      //TODO: 处理请求失败
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
      try (ResponseBody responseBody = response.body()) {
        String responseStr = responseBody.string();
        JSONObject jsonObject = new JSONObject(responseStr);
        int code = jsonObject.getInt("code");
        if (code == 200) {
          String accessToken = jsonObject.getString("accessToken");
          //将accessToken保存在SharedPreferences中
        } else {
          String msg = jsonObject.getString("msg");
          //TODO: 处理登录失败
        }
      } catch (JSONException e) {
        e.printStackTrace();
      }
    }
  });
}

Arahan:

  • Pertama, anda perlu memperkenalkan perpustakaan OkHttp3 ke dalam projek Android dan tentukan kaedah permintaan Antara muka yang berkaitan, seperti kaedah log masuk() di atas.
  • Dalam kaedah log masuk(), kami menggunakan objek OkHttpClient untuk membuat permintaan POST dan menghantar maklumat log masuk seperti nama pengguna dan kata laluan ke pelayan dalam format data JSON. Selepas menerima respons daripada pelayan, huraikan data JSON bagi respons dan simpan accessToken secara setempat untuk kegunaan seterusnya.

5. Ringkasan

Artikel ini memperkenalkan cara menggunakan Node.js untuk melaksanakan antara muka pengesahan log masuk Android dan menunjukkan proses pelaksanaan asasnya melalui kod sampel. Dalam projek sebenar, untuk memastikan keselamatan log masuk, isu seperti penyulitan penghantaran data, storan disulitkan kata laluan dan log masuk berbilang terminal juga perlu dipertimbangkan. Melalui penambahbaikan dan pengoptimuman berterusan, sistem pengesahan log masuk yang lebih lengkap, selamat dan cekap boleh dibina.

Atas ialah kandungan terperinci Nodejs melaksanakan log masuk Android. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn