很高兴知道因为我的基本注册/认证系统正在进行中.
所以我基本上得到了这个:
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.
我不知道机械师的工作原理.
多谢你们
我目前正在开发一个使用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之后.
这个解决方案听起来不错吗?或者这个逻辑属于后端?或者也许两者兼而有之?我有点失落,因为这是我第一次这样做
非常感谢
reactjs ×2
express ×1
javascript ×1
jwt ×1
passport.js ×1
react-native ×1
react-router ×1
redux ×1
socket.io ×1