【问题标题】:What users parameters are passed to the front-end from the server in MEAN Stack?在 MEAN Stack 中,哪些用户参数从服务器传递到前端?
【发布时间】:2015-01-08 10:27:55
【问题描述】:

我正在使用the MEAN stack,我有这个疑问:

目前,在 angularjs 插件中检查 chrome,登录后,在全局范围内显示我的用户信息如下:

user: { 
    provider: local
    name: Usertest
    email: usertest@usertest.com
    username: User
    _id: 52f94e49088c92d972163f64
    __v: 0
    role: special_member
} 

如您所见,我已将字段role 添加到用户架构中。

我的问题是:为什么新角色字段出现在前端,而例如密码没有出现? (我知道它预计不会出现,但是在哪个文件中或在哪里明确指出某些字段不应传递给角度管理的前端?)。

【问题讨论】:

    标签: node.js express passport.js mean-stack


    【解决方案1】:

    用户在app/views/index.html:

    中被转移到Angular
    <script type="text/javascript">
        window.user = {{user|safe}};
    </script>
    

    {{ user|safe }} 被传递给 app/controllers/index.js 中的模板:

    res.render('index', {
        user: req.user ? JSON.stringify(req.user) : 'null'
    });
    

    您可以在此处拦截用户以仅传递某些值:

    user: req.user ? JSON.stringify({ username: req.user.username, _id: req.user._id }) : 'null'
    

    【讨论】:

    • 我刚刚意识到 6 天前的一个新提交,它将渲染引擎从翡翠更改为 html。在旧的平均样板中,基于玉,这是我的应用程序,我找不到从服务器传递到前端的用户。我一直在搜索,即在 {{user|safe}} 的视图中,但还没有找到。
    • 我认为在翡翠中应该是window.user = #{user};
    • 我刚刚找到它:用户在 index.jade 中被传递为 window.user = !{user}; .你能告诉我!{user}是什么意思吗? {user} 前面的感叹号必须和 {{user|safe}} 一样,但是那个安全定义是什么?
    • 这表明它不需要以任何方式进行清理,它是安全免受 SQL 注入(和其他事情......?)的影响。如果变量是用户输入,您将不想使用safe,因为用户可能会对输入进行恶意操作。
    猜你喜欢
    • 2016-11-12
    • 2018-09-20
    • 2016-06-17
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多