【问题标题】:jwt_authentication request ajax - symfonyjwt_authentication 请求 ajax - symfony
【发布时间】:2019-09-02 08:14:48
【问题描述】:

我正在使用 symfont 和 JSON Web Token 和 Symfony。

我正在尝试使用 ajax 获取 jwt,但我得到 401(未经授权) 问题在于 ajax,因为我尝试使用邮递员,我可以得到令牌。

这是我的 security.yaml

security:
    encoders:
        App\Entity\Users:
            algorithm: bcrypt

    providers:
        users:
            entity:
                class: App\Entity\Users
                property: email

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

        login_app_manager:
            pattern:  ^/user/login
            stateless: true
            anonymous: true
            provider: users
            json_login:
                check_path: /user/login
                username_path: email
                password_path: password
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure
                require_previous_session: false


        app_api_manager:
            pattern:  ^/mngr/api
            stateless: true
            anonymous: false
            provider: users
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api, roles: IS_AUTHENTICATED_FULLY }


这是我的ajax

var data = {
    'email':email,
    'password':password
};
$.ajax({
    type: "POST",
    url: "/user/login",
    contentType: "application/json",
    data: JSON.stringify(data),
    success: function(response) {
        console.log(response);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.log('Error : ' + errorThrown);
    }
});

请帮帮我,谢谢

【问题讨论】:

  • 你能提供完整的security.yml吗?
  • @kemicofa 我已经用完整的 security.yml 更新了问题
  • 尝试更改路径 ^/user/login 中的 access_control 部分而不是 ^/login

标签: javascript ajax symfony jwt


【解决方案1】:

在 access_control 添加路径

  • { 路径:^/user/login,角色:IS_AUTHENTICATED_ANONYMOUSLY }

而不是

  • { 路径:^/login,角色:IS_AUTHENTICATED_ANONYMOUSLY }

并确保在 routes.yaml

中包含此路径
user_login:
 path: /user/login
 methods: ['POST']
       

【讨论】:

    【解决方案2】:

    尝试使用 post 代替 ajax:

            $(document).ready(function{
                //form submit
                $("form").submit(function(event){
                    var email      = $('#email').val();
                    var password   = $('#password').val();
                    $.post("/user/login",{
                        email:email, password: password
                    }).done(function(data){
    
                    })
                })
            });
    
    

    【讨论】:

    • 谢谢你的回答,我试过了,我还是 401(未经授权),我没有 jwt,因为那个请求是问它
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多