используя первичный ключ в asp.net mvc urls - PullRequest
0 голосов
/ 18 января 2010

я продолжаю слышать, что не должен использовать первичные ключи в моем asp.net mvc url

например: / Users / Edit / 1243

в чем здесь проблема?

что является альтернативой, вводя имена пользователей? если вы хотите, чтобы он был уникальным, кажется, что первичный ключ - самый чистый вариант

мысли

Ответы [ 5 ]

6 голосов
/ 18 января 2010

Я не вижу проблем с размещением первичного ключа в URL-адресе (как, впрочем, и создатели Stack Overflow и бесчисленных других сайтов). Одна вещь, которую часто делают, это предоставление первичного ключа, а также предоставление SEO и дружественного пользователю "slug" , который представляет собой удобочитаемый заголовок данных, на которые ссылается идентификатор.

Если вы намереваетесь идентифицировать ресурс (в вашем случае, учетную запись пользователя), вам нужно будет указать уникальный идентификатор в URL. Даже если вы решите не использовать первичный ключ, вы все равно должны выбрать идентификатор, который нельзя изменить.

3 голосов
/ 18 января 2010

Одной из проблем с введением (числовых) первичных ключей в URL является то, что кто-то (или какая-то поисковая система) может начать заменять число другими числами, чтобы увидеть, что у вас есть в вашей базе данных.Часто это не проблема, но если ...

  • у вас есть ситуация, когда пользователи должны только редактировать или просматривать свои собственные данные
  • у вас есть контент в вашей базе данныхчто вы «прячетесь», не ссылаясь на него на своем веб-сайте
  • и т. д.убедитесь, что никто не видит данные, которые они не должны.Пока вы выполняете правильную проверку разрешений для каждого запроса - первичные ключи не должны создавать проблем.
0 голосов
/ 18 января 2010

Нет реальной проблемы с использованием первичного ключа, особенно если это int (направляющие делают для уродливых URL).

Редактирование - плохой пример, что если у вас есть что-то вроде

www.example.org/users/1234

Это мало что говорит. и если это страница профиля, это ужасно нелогично.

Правильный URL для правильной работы.

0 голосов
/ 18 января 2010

Я думаю, что вы должны сохранить этот первичный ключ - иначе как вы будете идентифицировать свою сущность.

Два очка:

  • SEO - для Google & Co лучше читать текст. Почему бы не поставить идентификатор + имя в URL
  • Безопасность: но в вашем BL необходимо обязательно проверить, есть ли у текущего пользователя права доступа к запрашиваемому объекту.
0 голосов
/ 18 января 2010

Может быть две причины
- Безопасность
- SEO оптимизация

установка имен пользователей кажется хорошей альтернативой

...