grails:随机自动id';s
在rails的默认安装中,当您保存第一个域对象时,它会给出一个奇特的随机id,如grails:随机自动id';s,grails,key,auto-generate,Grails,Key,Auto Generate,在rails的默认安装中,当您保存第一个域对象时,它会给出一个奇特的随机id,如785787634或其他什么。Grails给出了1 在grails中,使自动生成的id难以猜测且不太可能相交的首选方法是什么?grails允许您自定义id生成器。看 在您的情况下,您可以考虑“UUID”或“GUID”< P>一种不同的方式是使用提供的缺省ID,但是当您需要对该项进行公共(非安全)访问时,使用UUID添加专用列。 我认为这将非常有效: class Widget { String uuid
785787634
或其他什么。Grails给出了1
在grails中,使自动生成的id难以猜测且不太可能相交的首选方法是什么?grails允许您自定义id生成器。看
在您的情况下,您可以考虑“UUID”或“GUID”
< P>一种不同的方式是使用提供的缺省ID,但是当您需要对该项进行公共(非安全)访问时,使用UUID添加专用列。 我认为这将非常有效:class Widget {
String uuid
static constraints = {
uuid unique: true
}
def beforeInsert() {
// optionally, replace the dashes by adding .replaceAll('-','')
uuid = UUID.randomUUID().toString()
}
}
然后您可以使用这样的控制器:
// url: app/public/widget/48b5451a-0d21-4a36-bcc0-88b129852f1b
PublicController {
def widget() {
Widget w = Widget.findByUuid(params.id)
...
}
}
这是自动索引的,所以不会太慢,UUID只在公开查找小部件时使用。如果有人登录,那么您可以执行安全检查,只需使用app/widget/edit/1
或类似工具即可
我无论如何都不会相信“随机数”是安全的。即使数字不是连续的,猜测数字也是有效的。相对而言,猜测UUID几乎是不可能的。但是,如果您有登录帐户,则授权检查是目前为止最好的方法。顺序自动生成ID的一个优点是,它降低了插入聚集索引的复杂性。将随机id称为“更好”是主观的。记住,你可以检查一下:我听说UUID会影响性能。在你选择它之前,你可能想做一个benchmark@mootinator“更好是主观的”这一点很好,我实际上不太关心安全性,因为我是一个十字路口。也许我走错了路。。我将尝试进一步隔离我遇到的问题,并发布一个新问题。