在Grails中使用黑名单过滤用户输入的最佳方法是什么?

在Grails中使用黑名单过滤用户输入的最佳方法是什么?,grails,filter,grails-2.0,blacklist,Grails,Filter,Grails 2.0,Blacklist,在我的网站上,我允许用户创建他们可以选择用户名的用户配置文件 class User { String username } 从黑名单中过滤和限制色情等禁词的最佳方式是什么? 有没有一个最佳做法可以做到这一点?是否有处理过滤的Grails插件? 我应该在哪一层执行过滤控制器、域模型等等?有多种方法可以实现这一点。如果您有黑名单/限制/禁止使用的词语,您可以: 触发一个XHR调用,从username字段中签出黑名单中的username 否则,创建一个标记库并检查username是否不在黑名

在我的网站上,我允许用户创建他们可以选择用户名的用户配置文件

class User {

   String username
}
从黑名单中过滤和限制色情等禁词的最佳方式是什么? 有没有一个最佳做法可以做到这一点?是否有处理过滤的Grails插件?
我应该在哪一层执行过滤控制器、域模型等等?

有多种方法可以实现这一点。如果您有黑名单/限制/禁止使用的词语,您可以:

  • 触发一个XHR调用,从
    username
    字段中签出黑名单中的
    username
  • 否则,创建一个标记库并检查
    username
    是否不在黑名单中
  • 否则,在控制器上创建一个过滤器,过滤掉黑名单上的用户名,并将用户重定向到错误页面
  • 否则,在将命令对象绑定到域类之前,在命令对象内部验证
    username
  • 否则,在域类的
    beforeeinsert
    beforeeupdate
    事件中验证
    username

  • 在所有这些方法中#1是先发制人且有效的,因为AJAX请求在页面提交和页面重新加载之前进行乐观检查。最不受欢迎的是#5。

    我想您可以将一个受限单词表映射到一个列表(您填充的列表),以便在创建时将用户名与之进行比较,如果存在匹配项,则将其拒绝。