我不斷聽到,我不應該使用主鍵在我的asp.net mvc的網址主鍵在asp.net mvc的網址
例如是:/用戶/編輯/ 1243
是什麼這裏的問題?
什麼是替代方案,把用戶名?因爲你想它是獨一無二的,似乎主鍵是最乾淨的選項
想法?
我不斷聽到,我不應該使用主鍵在我的asp.net mvc的網址主鍵在asp.net mvc的網址
例如是:/用戶/編輯/ 1243
是什麼這裏的問題?
什麼是替代方案,把用戶名?因爲你想它是獨一無二的,似乎主鍵是最乾淨的選項
想法?
我沒有看到將主鍵放在URL上的問題(Stack Overflow的創建者和無數其他站點)。經常做的一件事是提供主鍵,並提供搜索引擎優化和用戶友好的"slug"這是標識符鏈接到的數據的人類可讀標題。
如果您打算識別資源(在你的情況下,用戶帳戶),你將不得不對URL提供一個唯一標識符。即使你決定不使用主鍵,你仍然必須選擇一個不能改變的標識符。
標識符+ slug方法存在一個潛在的問題:如果Web應用程序僅使用標識符來查找資源,則可以將slug更改爲任何人(任何人)並仍指向相同的地方。這意味着看到URL的人可能會誤解爲認爲它指向的是與實際不同的東西。例如,http://stackoverflow.com/questions/2087441/how-to-build-a-house是Stack Overflow上這個問題的有效URL。 – 2010-10-14 09:29:35
從佈線的角度來看,塞子通常是無視的。通常在像這種路由的實現中使用id並且控制器根據id進行查找。如果傳入的url slug與真實的slug不同,請求會重定向到使用最新的slug的新構建的url。例如,點擊上一條評論中的鏈接。 – 2014-01-11 20:36:13
可能有兩個原因
- 安全consern
- SEO優化
把用戶名似乎是一個很好的選擇
,我認爲你應該保持該主鍵 - 否則你將如何確定實體。
兩點:
使用主鍵沒有真正的問題,特別是如果它是int(guid使醜陋的URL)。
一個編輯是一個不好的例子,如果你有什麼類似
www.example.org/users/1234
並沒有真正告訴你很多。如果它是一個個人資料頁面,它非常不直觀。
正確的作業的正確URL。
在網址中放置(數字)主鍵的問題之一是某人(或某個搜索引擎)可能會開始用其他數字替換數字,以查看數據庫中的內容。通常,這是沒有問題的,但如果...
...您必須確保您在Action方法中執行權限檢查,以確保沒有人看到他們不應該看到的數據。只要您對每個請求進行了適當的權限檢查 - 主鍵不會造成問題。
它沒有問題。我認爲用戶名對於高級用戶會更直觀。 – Burt 2010-01-18 16:27:28