在流星/反应框架中将当前用户设置为会话变量是个坏主意吗?

Is it a bad idea to set current user as session variable in meteor / react framework?

我正在使用meteor + react 开发一个小应用程序,主要是为了了解react 的工作原理。我目前没有使用任何形式的 Flux 或 Redux。

在应用程序的多个实例中,我必须检查使用该应用程序的人是否已登录。我目前正在使用来自 react-meteor-data 的 dataContainer 执行此操作。

import { createContainer } from 'meteor/react-meteor-data';
...
class NavigationBar extends Component {
    render () {
        return (
            <div>
                this.props.currentUser
            </div>
        )
    }
}
... 
export default createContainer(() => {
    let currentUser = Meteor.user()
    return {
        currentUser,
    };
}, NavigationBar);

虽然这工作正常,但我开始发现必须包装我要检查当前用户的每个组件有点烦人。由于我已经自定义了登录和注销功能,所以我想知道在这样的登录会话变量中设置当前用户是否有任何错误(不安全):

> Session.set('currentUser',Meteor.userId());

然后在注销时将其设置为空?

非常感谢

我想说的是,与其将用户信息保留在会话中,不如将布尔值保留为 true,因此如果 currentUser 不为 null,则可以将其设置为 true,然后就可以轻松使用此布尔变量在前端管理 UI 渲染,现在我不知道你的项目要求是什么,但在我看来,这是处理用户是否登录的一种好方法。如果对我的回答有任何更正,我将不胜感激。

谢谢!

保存当前用户ID是非常安全的。但请确保它已正确更新。如果用户将注销,就像您没有上一个用户 ID。

可以将用户信息存储在 session variable 中或将它们作为 props 传递给 child component。但是请确保在用户注销时正确删除会话变量。在你的情况下:

Session.set('currentUser',null);