小编Mai*_*rix的帖子

如何存储JWT并使用react发送每个请求

很高兴知道因为我的基本注册/认证系统正在进行中.

所以我基本上得到了这个:

app.post('/login', function(req,res) {
 Users.findOne({
email: req.body.email
}, function(err, user) {
if(err) throw err;

if(!user) {
  res.send({success: false, message: 'Authentication Failed, User not found.'});
} else {
  //Check passwords
  checkingPassword(req.body.password, user.password, function(err, isMatch) {
    if(isMatch && !err) {
      //Create token
      var token = jwt.sign(user,db.secret, {
        expiresIn: 1008000
      });
      res.json({success: true, jwtToken: "JWT "+token});
    } else {
      res.json({success: false, message: 'Authentication failed, wrong password buddy'});

       }
     });
    }
 });
});
Run Code Online (Sandbox Code Playgroud)

然后我保护我的/ admin路由和POSTMAN,每当我发送一个带有jwt的get请求时,一切都运行正常.

现在这里是棘手的部分,基本上当我要登录如果这是一个成功然后重定向我到管理页面,每次我尝试访问管理员/*路线我想发送到服务器我的jwToken但问题是,我该怎么做?我没有使用redux/flux,只使用react/react-router.

我不知道机械师的工作原理.

多谢你们

express jwt reactjs passport.js react-router

10
推荐指数
2
解决办法
9219
查看次数

如何正确处理聊天消息应用程序的"读取" - "未读"状态?

我目前正在开发一个使用socket.io提供聊天室功能的react-native应用程序

我目前愿意处理消息上的未读/读状态,但我不知道这个逻辑应该存在于何处:在客户端代码中还是在服务器端?

这是我的代码组件的基本实现

<ChatRoomCard /> //-> displays the last message and the chatroom title and 
                    can navigate to the ChatRoom component
<ChatRoom id={} />
Run Code Online (Sandbox Code Playgroud)

我的reduxState是这样的:

{
  chatRooms: [{chatRoomId: '', title: ''}],
  chatRoomsMessages: {
           [chatRoomId]: [{messageId: '', text: ''}]
     }
}
Run Code Online (Sandbox Code Playgroud)

每个组件都连接到redux,ChatRoomCard接收chatRooms包含对象数组``{{chatroomId:''}] 的props,而ChatRoom组件只接收相应的消息.

如果它在客户端,我的第一次尝试是向lastRead : timestamp每个ChatRoomCard 添加一个状态,每次ChatRoom组件安装时这个状态都会更新,从而显示最后的消息.

所以现在当socket io事件'new msg'触发并且我收到新消息时,我可以在ChatRoomCard组件中映射消息,将message.createdAt时间戳与ChatRoomCard.lastReadTimestamp进行比较,并在每当一个时增加'未读消息计数' message.timestamp位于lastReadTimestamp之后.

这个解决方案听起来不错吗?或者这个逻辑属于后端?或者也许两者兼而有之?我有点失落,因为这是我第一次这样做

非常感谢

javascript socket.io reactjs react-native redux

1
推荐指数
1
解决办法
1957
查看次数