在客户端放置数据库ID的最佳位置在哪里?

时间:2011-05-31 15:27:35

标签: javascript jquery html client-side

我正在使用ASP.Net提供一个页面。我在页面上使用jQuery动态添加的控件的添加/编辑/删除功能,其中一些在数据库中有相关记录。放置id(主键)的最佳位置在哪里,属性,data- *,jQuery.data()?如果Id在客户端可见,我应该担心吗?

6 个答案:

答案 0 :(得分:6)

最好在客户端加密记录的ID,以确保数据库的安全性。通常隐藏的字段可以解决问题。

这样,用户只能在查看源时看到加密的id。然后,被调用的脚本使用用于加密的密钥来检索记录标识符服务器端并根据需要操作数据。

答案 1 :(得分:1)

您可以将自己的属性添加到元素(例如my-attr="92"),您可以使用隐藏的输入字段,其值设置为id(<input type="hidden" value="92" />),或者您可以使用{ {1}}属性(例如id)。

我认为使用哪种方法并不重要,无论哪种方法最合适。

答案 2 :(得分:1)

您应从不将此信息放在您的客户端上。因为您不可避免地会通过服务器返回到最多的数据,所以应该放置某种形式的密钥(比如dsource ='db3'作为属性或隐藏字段......)然后进行某种查找方式在服务器进程中。

答案 3 :(得分:1)

首先,使用直接数据库ID。您将直接绑定到一个表的主键的一个版本。而是创建第二列,使用UUID作为主键的占位符

例如

tbl_person
 person_id INT PRIMARY KEY
 person_uuid VARCHAR(64)
 name VARCHAR(128)

但是为了回答实际问题,我建议你使用适当元素的属性,可能是id

<tr><td id="1234-5678">Paul </td></tr>

(编辑以获得正确的代码格式)

答案 4 :(得分:1)

最佳做法是使用jQuery.data(),因为它遵循HTML5 standard for such information

答案 5 :(得分:1)

我总是使用jQuery元数据库,它本质上是对象的类(或任何其他)属性中包含的$()。data()功能。

找到jQuery元数据插件here:“此插件能够从类,随机属性,子元素和HTML5数据*属性中提取元数据。”

所以你可以做这样的事情:

<tr><td>Dave Jones</td><td><input class="delete_person {person_id: 90}" type="button" value="Delete this guy" /></tr>

然后使用jQuery:

$('.delete_person.').click(function() { 
    // delete person 
    $.post('/controller/delete_person', {person_id: $(this).metadata().person_id},  
    function() {
     // the person was deleted
    }
});

希望有所帮助!