0

我有以下代码:

我的配置/security.yml

security:
    ...

    access_control:
        - { path: ^/admin, roles: [IS_AUTHENTICATED_FULLY] }
        - { path: ^/, roles: [IS_AUTHENTICATED_ANONYMOUSLY] }

    firewalls:
        main:
            pattern: ^/
            anonymous: lazy
            stateless: false
            guard:
                authenticators:
                    - App\Security\CasAuthenticator
            ...

我的 App\Security\CasAuthenticator :

class CasAuthenticator extends AbstractGuardAuthenticator
{

    public function supports(Request $request)
    {
        $isAuthenticatedAnonymouslyAllowed = ???????;

        if ($isAuthenticatedAnonymouslyAllowed && !\phpCAS::isAuthenticated()) { 
            return false;
        }

        return true;
    }

    public function getCredentials(Request $request)
    {
        return \phpCAS::forceAuthentication();
    }

    ...
}

我如何轻松测试访问控制是否允许我的方法使用 IS_AUTHENTICATED_ANONYMOUSLY?

4

1 回答 1

0

我认为如果您使用以下注释,您可以对其进行测试。

@Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")

据我所知,这应该只允许未经身份验证的用户使用您的方法。

有关更多信息,您可能需要查看此链接。 https://symfony.com/doc/4.2/best_practices/security.html

于 2020-11-28T15:39:53.553 回答