Я новичок в 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 / any / edit / 1 needs аутентификация.

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

2
Fabio Gomes 29 Июн 2009 в 07:31

2 ответа

Лучший ответ

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

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

1
veggerby 29 Июн 2009 в 16:04

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

[Authorize(Roles="admin")]

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

0
griegs 29 Июн 2009 в 08:56
Это не сработает, если вы не объедините его с механизмом авторизации. [Авторизовать] будет работать, т.е. разрешить любому аутентифицированному пользователю, [Авторизовать (Roles = "admin")] не будет с вышеуказанным кодом.
 – 
veggerby
29 Июн 2009 в 16:08