Nodejs网站的便捷登录需求
Nodejs网站的便捷登录需求
如题,目前正在用 node 做记账 app,由于现在市面上各种 app 用的都不是很顺心,加上导入,导出,过滤之类的功能,总是有限制,所以想自己做个程序,考虑到随时都能记,所以想用网页做,而且还可以兼容电脑上记账。
但是在身份验证上,如果是账号密码,就感觉有点麻烦了,而网页又不支持扫二维码登录。
所以想请问下大家,关于便捷登录,好办法么?
另外,账簿在电脑上,有什么办法约束下查看的限制,比如 app 上后台再激活后,会要求验证身份。
防止电脑被他人访问。
手机号+验证码
- ls+1,或者第三方登录
2. 没太搞明白,App 是电脑还是移动设备?数据存在本地还是服务器?
微信公共号,建议使用服务号,有消息功能
网页支持二维码扫码登录
微信扫码登录啊
比如做成网页,我用手机打开。就需要输入账号密码登录,不支持二维码这种便捷登陆。
之前还想做成小程序,拿 webview 套壳,后来发现个人号不能使用 webview,而且电脑上还要先开微信再进,就有点麻烦了,不如直接依赖浏览器直接
数据肯定是放服务端了,免得同步的麻烦
嗯嗯,比如我在电脑上登录网页后,突然离开了,没有有什么好办法防止别人查看这个网站呢。现实中,支付宝允许激活时密码验证,所以才想网页有没有类似的办法
不在系统安装辅助程序的话,没有保证实质安全的方法。
例如前端计时,一定时间没有活动自动退出;用长连接 /websocket,在其他端控制这边的登录状态,等等。
企业微信有扫码授权和网页授权,或者 GitHub OAuth。都开放接口给个人用户了,了解下
个人推荐 github,也不需要记多余的账号密码。
嗯嗯,多谢,之前用 omv 就是超时退出的策略。如果在 session 里保存一个最后访问时间,再每次新请求的时候进行比对,这种办法,有逻辑 bug 么
多谢,之前用过安卓的 opengithub(好像叫这个),一个第三方客户端。就是采用这种模式,但是如果本机没有登陆过 github 还是会要求走账号密码登录,而且 github 不定期被和谐,响应速度实在不好把握。
如果用 u 盘里装 ssl 证书。进行双向认证,这办法可行么?手机端不知道怎么附加证书。
没有,但是要不要考虑打开页面后离开时当前页面的数据会不会泄露…(这个其实基本无解)
手机可以装自己的证书,Android 在设置—安全—受信任的凭据—从存储设备安装,但是从哪个版本开始装自己的证书会在通知栏有提示不安全。iOS 也可以装。
多谢多谢,电脑确实做不到百分之百安全,加上点限制,感觉就可以了
在Node.js中实现便捷登录功能,通常会结合Express框架和数据库(如MongoDB)来管理用户信息和会话。以下是一个简化的示例,展示如何实现基本的用户登录功能。
首先,确保你已经安装了必要的包:
npm install express mongoose body-parser bcryptjs jsonwebtoken
然后,创建一个简单的Express应用:
const express = require('express');
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const app = express();
app.use(bodyParser.json());
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
const UserSchema = new mongoose.Schema({
username: String,
password: String
});
const User = mongoose.model('User', UserSchema);
app.post('/register', async (req, res) => {
const { username, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
const user = new User({ username, password: hashedPassword });
await user.save();
res.send('User registered');
});
app.post('/login', async (req, res) => {
// ... (省略验证逻辑,包括数据库查询和密码比较)
const token = jwt.sign({ username: user.username }, 'your_secret_key');
res.json({ token });
});
app.listen(3000, () => console.log('Server running on port 3000'));
注意,为了简化,省略了密码验证和错误处理逻辑。在生产环境中,请确保使用HTTPS、安全的密码存储和验证机制,以及适当的错误处理。