Лучший способ предотвратить доступ к действию в MVC - PullRequest
1 голос
/ 12 марта 2012

В старом проекте mvc 1 я добавляю возможность пользователям редактировать свои данные. Я не использую Аутентификацию по формам (главным образом потому, что мне не следует массово изменять предыдущий код), поэтому я пытаюсь придумать лучший способ, позволяющий только зарегистрированному пользователю редактировать свои данные.

На данный момент, учитывая, что URL равен http://localhost:61681/users/edit?userId=29 другому пользователю просто нужно изменить userId, чтобы редактировать детали других.

То, о чем я могу только подумать, - это проверить внутри метода, соответствует ли userId параметру, но я не знаю, есть ли лучшие способы сделать это.

Позвольте мне извиниться, потому что я понимаю, что вопрос показывает мои самые базовые знания.

Спасибо

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Почему бы не позволить идентификатору пользователя, с которым вы проверяете userId, быть параметром?Если страница редактирования не предназначена для того, чтобы кто-либо мог редактировать чужую информацию, тогда для параметра userId нет никаких оснований - просто разрешите редактировать пользователя, который сделал запрос.

1 голос
/ 12 марта 2012
if( currrentUser.Id != userId )
  return Redirect( "http://example.com/access-denied" );

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...