2010-01-18 62 views
0

我不斷聽到,我不應該使用主鍵在我的asp.net mvc的網址主鍵在asp.net mvc的網址

例如是:/用戶/編輯/ 1243

是什麼這裏的問題?

什麼是替代方案,把用戶名?因爲你想它是獨一無二的,似乎主鍵是最乾淨的選項

想法?

+0

它沒有問題。我認爲用戶名對於高級用戶會更直觀。 – Burt 2010-01-18 16:27:28

回答

6

我沒有看到將主鍵放在URL上的問題(Stack Overflow的創建者和無數其他站點)。經常做的一件事是提供主鍵,並提供搜索引擎優化和用戶友好的"slug"這是標識符鏈接到的數據的人類可讀標題。

如果您打算識別資源(在你的情況下,用戶帳戶),你將不得不對URL提供一個唯一標識符。即使你決定不使用主鍵,你仍然必須選擇一個不能改變的標識符。

+1

標識符+ slug方法存在一個潛在的問題:如果Web應用程序僅使用標識符來查找資源,則可以將slug更改爲任何人(任何人)並仍指向相同的地方。這意味着看到URL的人可能會誤解爲認爲它指向的是與實際不同的東西。例如,http://stackoverflow.com/questions/2087441/how-to-build-a-house是Stack Overflow上這個問題的有效URL。 – 2010-10-14 09:29:35

+0

從佈線的角度來看,塞子通常是無視的。通常在像這種路由的實現中使用id並且控制器根據id進行查找。如果傳入的url slug與真實的slug不同,請求會重定向到使用最新的slug的新構建的url。例如,點擊上一條評論中的鏈接。 – 2014-01-11 20:36:13

0

可能有兩個原因
- 安全consern
- SEO優化

把用戶名似乎是一個很好的選擇

0

,我認爲你應該保持該主鍵 - 否則你將如何確定實體。

兩點:

  • SEO - 這是更好地爲谷歌&共同閱讀的文本。爲什麼不把ID +名稱放在URL中
  • 安全性:但是如果當前用戶有權訪問請求的實體,則必須檢查您的BL。
0

使用主鍵沒有真正的問題,特別是如果它是int(guid使醜陋的URL)。

一個編輯是一個不好的例子,如果你有什麼類似

www.example.org/users/1234 

並沒有真正告訴你很多。如果它是一個個人資料頁面,它非常不直觀。

正確的作業的正確URL。

2

在網址中放置(數字)主鍵的問題之一是某人(或某個搜索引擎)可能會開始用其他數字替換數字,以查看數據庫中的內容。通常,這是沒有問題的,但如果...

  • 你有一種情況,用戶只應該修改或看到自己的數據
  • 你有你的數據庫的內容,你是「隱藏」通過不鏈接到您的網站上
  • 等...

...您必須確保您在Action方法中執行權限檢查,以確保沒有人看到他們不應該看到的數據。只要您對每個請求進行了適當的權限檢查 - 主鍵不會造成問題。