在架构

时间:2016-03-26 19:48:09

标签: meteor meteor-autoform simple-schema

我已经安装了mpowaga:autoform-summernotedjedi:sanitize-html来尝试清理进入simpleschema的数据但是我不确定如何让它工作。我只希望用户能够添加'p'和'a'标签以及粗体和斜体样式。我在这里做错了什么?

description: {
       type: String,  
        optional: true,
        autoform: {             
            afFieldInput: {
                type: 'summernote', 
                class: 'editor',
                settings: {
                    allowedTags: ['p', 'a'],
                    toolbar: [
                        ['style', ['bold', 'italic']],
                        ['para', ['ul', 'ol']]
                      ]
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

要开始回答你的问题,我认为你不能在你的SimpleSchema内进行消毒(虽然我希望我错了,因为那是最简单的)。据我所知,该设置对象适用于 summer-note's 选项......例如什么将显示在工具栏上。我不认为该对象是您可以使用djedi:sanitize-html功能的地方:

http://summernote.org/deep-dive/ https://github.com/mpowaga/meteor-autoform-summernote/issues/16

这个GitHub问题似乎表明,sanitize应该在某种钩子之前进入:

https://github.com/mpowaga/meteor-autoform-summernote/issues/13

但是,我认为autoform挂钩是客户端的,因此djedi:sanitize-html将无法在那里工作。有一个客户端版本(djedi:sanitize-html-client),但我不确定这是不安全的,并且首先打败了消毒的目的?

就个人而言,我正在使用通过方法调用插入的autoform。如果我解决它,我会报告。

进一步阅读:

答案 1 :(得分:0)

在summernote设置中设置允许的标签只能在客户端工作,并且不安全。你需要这样的东西来清理服务器。

description: {
       type: String,  
        optional: true,
        autoValue: function(){
          return Meteor.isServer ? sanitizeHtml( this.value ) : this.value;
        },
        autoform: {             
            afFieldInput: {
                type: 'summernote', 
                class: 'editor',
                settings: ...
            }
        }
    }