【问题标题】:Writing API-first app, need authentication model and workflow编写 API-first 应用程序,需要身份验证模型和工作流程
【发布时间】:2014-03-25 17:39:25
【问题描述】:

所以我正在制作一个移动应用程序,它将使用我正在编写的 API。该 API 将仅供移动应用使用,其他任何人都不能使用(也许我会允许其他人使用有限的方法集?)。

API 本身可以正常工作,但我担心的是: - 安全 - 它是无状态的

我使用 passport.js 进行用户身份验证,使用 RedisStore 存储用户会话:

app.use(express.cookieParser());
app.use(express.session({
    secret: secrets.sessionSecret,
    store: new RedisStore({ host: 'localhost', port: 6379 })
}));

对于需要经过身份验证的用户的 api 调用,我只检查 req.isAuthenticated() 方法是否为真。很标准。

但是,我的阅读和研究表明,回复会话的 API 设计不佳。我该如何改变呢?对于这种模型,什么是好的、不复杂的设计?考虑到我的用例,我应该怎么做?有代码示例吗?

【问题讨论】:

    标签: node.js api session express


    【解决方案1】:

    OAuth 可能是您最好的选择。它looks to be straightforward to implement with Passport

    另一种方法是在登录时生成一个随机令牌字符串,将其存储在具有到期时间的数据库中,并要求令牌包含在每个请求中以对其进行验证。

    【讨论】:

    • 根据我的阅读,当您有许多客户访问您的应用程序(如 Twitter 或 FB)时,OAuth 非常有用。我只想让我的应用程序这样做。
    • 好的,很公平。我建议了另一种方法。
    • 安全性如何?我正在为密码重置过程做类似的事情。
    • 它足够安全,可以满足大多数需求。它避免了每次请求都发送密码的需要,并且如果需要,可以通过从数据库中删除令牌来轻松强制客户端再次登录。
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多