Как создать конечную точку API, которая нуждается в аутентификации с использованием аутентификации jwt для wp rest - PullRequest
0 голосов
/ 24 мая 2019

Я создал конечную точку, используя пространство имен JWT api, но, похоже, не могу заставить работать часть аутентификации, я использовал токен wp-json / jwt-auth / v1 /, чтобы получить доступ к токену, но как мне это сделать? аутентифицировать пользовательскую конечную точку?

Ниже приведен код, и я пробовал тестировать в почтальоне, но получил несколько ошибок от 403 до. Не найдено ни одного маршрута, соответствующего URL и методу запроса

функция wp_register_crm_routes () {

// register_rest_route() handles more arguments but we are going to stick to the basics for now.
register_rest_route( '/wp-json/jwt-auth/v1', 'addproduct', array(
    // By using this constant we ensure that when the WP_REST_Server changes our readable endpoints will work as intended.
    'methods'  =>'POST',
    // Here we register our callback. The callback is fired when this endpoint is matched by the WP_REST_Server class.
    'callback' => 'addProductFromCRM',
    'permission_callback' => function ($request) {
        if (current_user_can('edit_others_posts'))
        return true;
 }
) );

1 Ответ

0 голосов
/ 24 мая 2019

Для веб-токена Json требуется «секретный ключ» для аутентификации вызова API.Вы можете сгенерировать его на бэкэнде и передать его во внешний интерфейс для использования при каждом последующем вызове API или статически сохранить его в переменной окружения на внешнем интерфейсе (чтобы быть в безопасности).(Необязательно) Если у вас есть зарегистрированный пользователь, вы также можете присоединить токен к объекту пользователя.

Наконец, вы можете проверить этот токен на любом из ваших защищенных маршрутов.

Javascriptреализация

jwt.sign({user}, 'privatekey', { expiresIn: '1h' },(err, token) => {
            if(err) { console.log(err) }    
            res.send(token);
        });


jwt.verify(req.token, 'privatekey', (err, authorizedData) => {
        if(err){
            //If error send Forbidden (403)
            console.log('ERROR: Could not connect to the protected route');
            res.sendStatus(403);
        } else {
            //If token is successfully verified, we can send the autorized data 
            res.json({
                message: 'Successful log in',
                authorizedData
            });
            console.log('SUCCESS: Connected to protected route');
        }
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...