を通過するのを拒否しました。AngfularのフロントアプリケーションとSymfony2のREST APIバックエンドを持つプロジェクトをビルドしました(2.7、すぐに3.3に移行する必要があります)。 バックエンド側では、FOSRestBundle、FOSUSerBundle、LexikAuthBundleを使用しています。また、REST APIのニーズに対応する他のクールなバンドルもあります。 私は最近、ソーシャルプロバイダのGoogleとFacebook(フロントログインボタン、その後fos_userバックエンド側を作成し、LexikBundleによって提供されたJWTだけを認知したユーザーに手動で設定する)を通じて一度ログインしました。これは、次のapp\config\security.yml
でうまく動作:Access_Controlは、匿名トークンのユーザーが
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_API: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/api/login
stateless: true
anonymous: true
form_login:
check_path: /api/login_check
login_path: /api/login
require_previous_session: false
username_parameter: username
password_parameter: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
api:
pattern: ^/api
stateless: true
anonymous: true
lexik_jwt:
authorization_header:
enabled: true
prefix: Bearer
query_parameter:
enabled: true
name: bearer
always_authenticate_before_granting: true
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/registration., roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: [IS_AUTHENTICATED_FULLY, ROLE_API] }
これは/ API /ログイン/社会的なルートの正常に動作します(データは、本体、POSTである場合)が、到達することは不可能/ API /登録:(:
INFO - Matched route "myapp_security_register".
Context: {"route_parameters": {"_controller":"myapp\\CoreBundle\\Controller\\SecurityController::registerAction","_route":"myapp_security_register"},"request_uri":"http://127.0.0.1:8000/api/registration"}
INFO - Populated the TokenStorage with an anonymous Token.
ERROR - Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "You do not have the necessary permissions" at C:\projects\myappAPI\vendor\friendsofsymfony\rest-bundle\FOS\RestBundle\EventListener\AccessDeniedListener.php line 70
Context: {"exception":"Object(Symfony\\Component\\HttpKernel\\Exception\\AccessDeniedHttpException)"}
私はそれを得る、匿名のトークンが設定されているので!なぜACCESS_CONTROLのdoesnt/API /登録アクセスを聞かせて私のコントローラ?私は何をしないのですいけない? 私がすることもでき、ポストFOSRestBundleコンフィグそれが役立つ可能性がある場合。
感謝、Bor。
OK感謝しなければなりません!私はこのタイプミスをしていました。私はこれを投稿した直後に見て削除しました。しかし、それはどちらかの仕事をしなかった...私はPCを再起動し、統合されたPHPサーバーを再起動し、今は期待どおりに動作するようだ。 security.ymlはdev環境にキャッシュされ、クリア:キャッシュは問題を解決しましたか? – bohr
はいタイプミスを修正する**と後でキャッシュをクリアする組み合わせはそれを解決しているはずです:) – nifr