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:
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:
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}`); });
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(); }); };
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:
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:
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!