Как запретить пользователям редактировать другие профили, кроме своих, в веб-приложении MVC.NET? - PullRequest
0 голосов
/ 10 сентября 2009

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

Я думал о том, чтобы поместить IF перед строкой ниже, которая покажет эту строку в этом состоянии, но я не думаю, что это лучший способ, так как другие пользователи могут угадать URL-адрес редактирования, например: domain.com/user/ редактировать / 5 например.

    <%=Html.ActionLink("Edit", "Edit", new { id=Model.UserID }) %> 

Мы используем: ASP.NET MVC, базу данных SQL и ADO.NET для базы данных. Также: подписка OpenID.

1 Ответ

3 голосов
/ 10 сентября 2009

Вам нужно будет написать код в действии контроллера. В основном что-то вроде:

MembershipUser user = Membership.GetUser();

if (!User.IsInRole("Administrator") && (user.ProviderUserKey != id))
  return View("Unauthorized");

В вашем случае для OpenID, он будет работать примерно так же. Предположим, что это псевдокод:

var user = GetLoggedInUser();

if (!IsAdmin(user) && (user.UserID != id))
  return View("Unauthorized");

где GetLoggedInUser получает объект пользователя для текущего пользователя, а IsAdmin выясняет, является ли объект пользователя администратором.

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