【发布时间】:2016-04-11 08:21:21
【问题描述】:
假设我正在构建一个带有 REST 后端的简单 Web 应用程序,用户在其中拥有自己的包含用户信息的页面。
我想要实现的是,如果未经身份验证的用户向
www.mywebapp.com/api/user/john
他们将获得有限的信息(例如只有年龄和电子邮件)。但是如果用户登录并发出相同的请求,服务器也会响应更多信息(如个人偏好等)。
我在想可能是验证用户令牌的中间件传递请求的权限(req.role = guest 或 req.role = user)。然后在 user/:name 端点中,它会检查角色并以不同的内容进行响应。
另一种选择是为经过身份验证的用户创建一个新的路由端点,然后检查在客户端调用哪个端点。
这里的最佳做法是什么?
【问题讨论】:
-
选择中间件。许多广泛使用的身份验证模块(如passportjs)都使用这种模式。
-
我使用护照进行用户身份验证。要检查用户是否登录,我检查 req.session.passport.user 是否存在。如果确实存在,我然后使用该变量查询数据库以查看登录用户的用户类型(管理员、常规等)。我根据从数据库返回的用户类型提供适当的内容