Новое в Symfony 2.8: Компонент аутентификации Guard

Компонент Symfony безопасности делится на две основные части: аутентификацию и авторизацию. Подсистема авторизации проверяет, имеет ли пользователь разрешение на доступ к ресурсу. Эта система связана с ролями и решениями и одновременно мощная и простая в использовании.

Подсистема аутентификации проверяет личность пользователя посредствам любого из поддерживаемых методов: имя пользователя + пароль, сертификаты, маркеры, API и т.д. Это подсистема мощная и гибкая, но много разработчиков Symfony указывают на её сложность.

Новый, связанных с безопасностью компонент, называемый Guard направлен на упрощение подсистемы аутентификации. Это радикально новый подход, основанный на создании только одного PHP класса, который реализует GuardAuthenticatorInterface. Этот интерфейс определяет следующие семь методов:

interface GuardAuthenticatorInterface
{
    /**
     * Get the authentication credentials from the request. If you return null,
     * authentication will be skipped.
     *
     * For example, for a form login, you might:
     *
     *      return array(
     *          'username' => $request->request->get('_username'),
     *          'password' => $request->request->get('_password'),
     *      );
     *
     * Or for an API token that's on a header, you might use:
     *
     *      return array('api_key' => $request->headers->get('X-API-TOKEN'));
     */
    public function getCredentials(Request $request);

    /**
     * Return a UserInterface object based on the credentials returned by getCredentials()
     */
    public function getUser($credentials, UserProviderInterface $userProvider);

    /**
     * Throw an AuthenticationException if the credentials returned by
     * getCredentials() are invalid.
     */
    public function checkCredentials($credentials, UserInterface $user);

    /**
     * Create an authenticated token for the given user. You can skip this
     * method by extending the AbstractGuardAuthenticator class from your
     * authenticator.
     */
    public function createAuthenticatedToken(UserInterface $user, $providerKey);

    /**
     * Called when authentication executed, but failed (e.g. wrong username password).
     */
    public function onAuthenticationFailure(Request $request, AuthenticationException $exception);

    /**
     * Called when authentication executed and was successful (for example a
     * RedirectResponse to the last page they visited)
     */
    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey);

    /**
     * Does this method support remember me cookies?
     */
    public function supportsRememberMe();
}

После реализации этого интерфейса вы сможете аутентифицировать пользователей через формы ввода пароля, Facebook, Twitter или любого другого OAuthсервиса, API токенов и т.д. Кроме того, вы легко сможете настроить поведение при успешной или неудачной попытке.

Более полного примера работы с компонентом Guard нет в этой статьи, но вы можете прочитать (и помочь нам закончить) работу в документации компонента или официальном учебнике.

Источник: http://symfony.com/blog/new-in-symfony-2-8-guard-authentication-component

Добавить комментарий

Ваш адрес email не будет опубликован.

16 − 7 =