Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在asp.net mvc URL中使用主键_Asp.net Mvc_Url_Primary Key - Fatal编程技术网

Asp.net mvc 在asp.net mvc URL中使用主键

Asp.net mvc 在asp.net mvc URL中使用主键,asp.net-mvc,url,primary-key,Asp.net Mvc,Url,Primary Key,我一直听说我不应该在我的asp.net mvc url中使用主键 例如:/Users/Edit/1243 这里的问题是什么 还有什么办法,输入用户名?因为您希望它是唯一的,所以主键似乎是最干净的选项 想法?我看不出在URL上放置主键有任何问题(Stack Overflow和无数其他网站的创建者也不这么认为)。通常要做的一件事是提供主键,并提供SEO和用户友好型,即标识符链接到的数据的可读标题 如果您打算标识资源(在您的情况下是用户帐户),则必须在URL上提供唯一标识符。即使您决定不使用主键,也必

我一直听说我不应该在我的asp.net mvc url中使用主键

例如:/Users/Edit/1243

这里的问题是什么

还有什么办法,输入用户名?因为您希望它是唯一的,所以主键似乎是最干净的选项


想法?

我看不出在URL上放置主键有任何问题(Stack Overflow和无数其他网站的创建者也不这么认为)。通常要做的一件事是提供主键,并提供SEO和用户友好型,即标识符链接到的数据的可读标题


如果您打算标识资源(在您的情况下是用户帐户),则必须在URL上提供唯一标识符。即使您决定不使用主键,也必须选择一个不能更改的标识符。

可能有两个原因
-安全成本
-搜索引擎优化


放置用户名似乎是一个不错的选择

我认为您应该保留主键,否则您将如何识别您的实体

两点:

  • 搜索引擎优化-谷歌公司最好阅读文本。为什么不在URL中添加ID+名称
  • 安全性:但必须在BL中检查当前用户是否具有对请求实体的访问权限
使用主键没有真正的问题,特别是如果主键是int(guid会造成难看的url)

编辑是一个糟糕的例子,如果您有

www.example.org/users/1234
这并不能告诉你多少。如果它是一个个人资料页面,它是非常反直觉的


正确工作的正确URL。

在URL中放置(数字)主键的问题之一是有人(或某个搜索引擎)可能会开始用其他数字替换该数字,以查看数据库中的数字。通常这不是问题,但是如果

  • 在这种情况下,用户只能编辑或查看自己的数据
  • 您的数据库中有您通过不在网站上链接而“隐藏”的内容
  • 等等

…您必须确保在操作方法中执行权限检查,以确保没有人看到他们不应该看到的数据。只要您对每个请求进行正确的权限检查,主键就不会产生问题。

没有问题。我认为,对于高级用户来说,用户名会更直观。标识符+slug方法的一个潜在问题是:如果web应用程序只使用标识符来查找资源,slug可以(由任何人)更改为任何内容,并且仍然指向同一个位置。这意味着看到URL的人可能会被误导,以为它指向的是与它实际所指向的不同的东西。例如,对于堆栈溢出问题,是一个有效的URL。从路由角度来看,slug通常被忽略。通常,在此类实现中,路由使用id,控制器根据id进行查找。如果传入url段塞与实际段塞不同,则请求将重定向到使用最新段塞的新构造url。例如,单击上一条注释中的链接。