无需登录即可从具有访问令牌的用户获取数据

时间:2016-03-15 08:20:17

标签: php symfony

这个网站我正在努力一点点。我最近添加了一个API,以便我可以收到通知。要获取这些通知,请输入此网址

http://localhost/pham/Claroline/web/app_dev.php/icap_notification/api/notifications.json?access_token=“一些访问令牌”

现在它只在用户登录时才有效。是否可以在没有用户登录的情况下使其正常工作?我的意思是,因为我得到访问令牌,它不应该是一个问题。实际上我需要它完成,因为我也在开发一个移动应用程序,基本上我在应用程序中使用这个URL来显示通知

谢谢大家

编辑:这是security.yml文件

安全性:

providers:
    user_db:
        entity: { class: Claroline\CoreBundle\Entity\User }

encoders:
    Claroline\CoreBundle\Entity\User: sha512

firewalls:
    install:
        pattern: ^/install
        security: false

    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    oauth_token:
        pattern:    ^/oauth/v2/token
        security:   false

    oauth_authorize:
        pattern:    ^/oauth/v2/auth
        form_login:
            check_path: /oauth/v2/auth_login_check
            login_path: /oauth/v2/auth_login
            default_target_path: /oauth/v2/auth/form
        anonymous: true

    api:
        pattern:    ^/api
        claro_api: true
        #fos_oauth: true
        #stateless:  true
        security: true

    main:
        pattern: ^/
        simple_form:
            authenticator: claroline.core_bundle.library.security.external_authenticator
            check_path: /login_check
        form_login:
            success_handler: claroline.authentication_handler
            failure_handler: claroline.security.ajax_authentication_failure_handler
        anonymous: ~
        logout: true
        switch_user: { role: ROLE_ADMIN, parameter: _switch }
        remember_me:
            key:      "%secret%"
            lifetime: 31536000 # 365 days
            path:     /
            domain:   ~

access_decision_manager:
    allow_if_all_abstain: false

access_control:
    - { path: ^/oauth/v2/auth_login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api,                  role: IS_AUTHENTICATED_FULLY }
    - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/connect, role: IS_AUTHENTICATED_ANONYMOUSLY }

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。 Symfony2 documentation描述了为您的应用程序提供多个“防火墙”的可能性。

在您的情况下,您的大多数网站都有一个“正常”的网站,并且您的API有一个“api access”。它们当然可以是不同类型的,并且使用不同的用户提供者(也就是不同的“用户”集)。