Nodejs工程如何同时支持网页和app用户注册登录的方案选择

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

Nodejs工程如何同时支持网页和app用户注册登录的方案选择
null

11 回复

node 工程是指 server 还是 UI?
UI 的话可以用 React native
Server 的话… 把注册和登录做成接口不就行了么…


应该是 sever 工程吧, 既可以输出 html 也可以输出 json 接口.

现在准备做注册和登录的 json 接口, 供网页和 app 调用.
按我现在知道的, 在网页里面管理用户登录状态用的是 cookie 或者 session, 在 app 里面要用 token.

但是我不知道怎么让 json 接口同时支持 cookie/session 和 token

cookie 和 session 对网页不是必须的啊,前后端分离的也都是用 token 啊。
非要这么做的话,也可以在收到请求的时候先判断一下,有没有 cookie 信息发过来呗。但是这样麻烦多了。

前后端分离, 统一用一个 json 接口, 用 token 做登录状态, cookie/session 丢掉吧. server 返回 html 的方式也丢掉吧.

rest token 标准走就好了



不需要什么方案啊

你觉的 cookie 好用那就用 cookie 啊,先读 cookie 后读 token 或者反过来不就可以了

可以考虑用 Oauth2

http 加个头,或者用 user agent 分开移动端与 pc ……

前后端完全分离
授权模式
app 内嵌 web ,登录后回到 app

在Node.js工程中同时支持网页和APP用户注册登录,通常可以采用以下方案:

1. 使用JWT(JSON Web Token)进行认证

JWT是一种轻量级、自包含的、基于JSON的用于双方之间安全传输信息的简洁的、URL安全的表示方法。它适合用于前后端分离架构中的用户认证。

示例代码:

const jwt = require('jsonwebtoken');

// 生成JWT
function generateToken(user) {
    const token = jwt.sign({ id: user.id, username: user.username }, 'your_secret_key', { expiresIn: '1h' });
    return token;
}

// 验证JWT
function verifyToken(token) {
    return jwt.verify(token, 'your_secret_key', (err, decoded) => {
        if (err) {
            return false;
        }
        return decoded;
    });
}

2. 使用OAuth2或OpenID Connect进行第三方登录

如果你的应用需要支持第三方登录(如微信、QQ、GitHub等),可以使用OAuth2或OpenID Connect协议。这些协议允许用户通过第三方身份提供商进行认证,然后返回一个访问令牌,你可以使用这个令牌获取用户信息。

3. 使用Session进行认证(适用于传统Web应用)

对于传统的Web应用,可以使用Session进行用户认证。在Node.js中,可以使用express-session中间件来管理Session。

总结

选择哪种方案取决于你的应用架构和具体需求。对于前后端分离的现代Web应用,JWT是一个很好的选择。对于需要支持第三方登录的应用,OAuth2或OpenID Connect是更好的选择。对于传统的Web应用,Session仍然是一个可行的选择。

回到顶部