Самый простой способ защитить всю папку (с аутентификацией), используя asp.net MVC и OpenID - PullRequest
2 голосов
/ 29 июня 2009

Я действительно новичок в asp.net и mvc, поэтому я немного растерялся.

Мне удалось войти в систему с помощью OpenID в моем приложении, используя это Учебное пособие .

Но я не уверен, что если просто установить Session ["Admin"] = true, это правильный путь, которым нужно следовать, пока мой код выглядит примерно так:

switch (openid.Response.Status)
{
  case AuthenticationStatus.Authenticated:
    if (openid.Response.ClaimedIdentifier.ToString() == Settings.Default.AdminClaimedIdentifier)
      Session["Admin"] = true;                                 
    FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false);
    break;
  ...
}

Для приложения, которое я пытаюсь написать, сейчас нужен только один администратор, и я обнаружил, что очень просто иметь OpenID этого администратора в настройках.

По сути, я хочу, чтобы в настройках был один OpenID администратора, и они защищали целую папку на основе этой аутентификации, поэтому для каждого действия внутри нее и ее подпапок требуются права администратора, например: ~ / Admin / what / edit / 1 требуется аутентификация.

Какой самый простой и понятный способ сделать такой тип аутентификации?

Ответы [ 2 ]

1 голос
/ 29 июня 2009

OpenID предоставляет вам Аутентификацию (кто вы?), Где ограничением доступа к «папке» или Admin Controller является Авторизация (и) (что вы можете сделать?).

Простое решение, которое также может работать для вас в будущем (в зависимости от ваших потребностей), заключается в использовании RoleProvider , который позволит вам использовать атрибут Authorize, как подсказывает griegs.

0 голосов
/ 29 июня 2009

Я не знаю об OpenId, но обычно вы помещаете следующее в верхнюю часть вашего класса контроллера, чтобы заблокировать всю папку, или в ActionResult, чтобы заблокировать это действие;

[Authorize(Roles="admin")]

Надеюсь, это поможет.

...