客户端如何知道它是否已登录(使用服务器上的passportjs和express)?

5
我正在服务器上使用passportjs进行身份验证,想知道是否有任何值在客户端上设置,以告诉客户端他们是否已登录。如果没有,您将如何向客户端提供此信息?客户端是否可以访问有关会话的信息?
以下是几种可能的解决方案:
  1. 在服务器端发送相同的文件但使用不同的响应头,在客户端检查响应头以设置“loggedIn”值。
  2. 在页面加载后发送查询,检查用户是否已登录,然后设置一个值。
  3. 其他方法?
谢谢!
1个回答

2
一般来说,在express/passport中,如果req.user被设置了,那么你可以将用户视为已登录。据我所知,在所有实现中,没有任何特定的响应发送到客户端。通常的做法是检查req.user,然后根据不同的逻辑流程进行处理(例如,渲染不同的页眉)。你还可以在HTML预处理器中呈现该数据。
var isLoggedIn = !!req.user;
res.render('myPage', { loggedIn: isLoggedIn });

req.user 在客户端是否可用?或者在 User 模式中设置访问级别并在提供内容之前检查用户是否具有某些访问权限是否安全?我想知道这是否安全,或者是否可能向 req.user 中“注入”值(从而使其不安全以进行访问权限检查)。谢谢。 - knutole
1
@knutole req.user 在客户端不可用,并且被视为安全的。 - SomeKittens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接