Как декодировать токен jwt в javascript без использования библиотеки?

Я обычно делаю это:

1.- создайте классы сущности в / system / application / classes

class MyEntity {
}

2. определите константу, указывающую на эту папку on /system/application/config/constants.php

define('CLASSES_DIR', APPPATH . "classes/");

3.- включить классы объектов из моделей:

require_once(CLASSES_DIR  . "MyEntity.php");

class MyModel extends Model {

   function test() {
      $entity = new MyEntity();
      $entity->doSomeStuff();
   }

}

Это не нарушит вашу структуру mvc , и сохраняет для классов объектов раздельно. Надеюсь, что это поможет!

146
задан joe 2 July 2019 в 10:31
поделиться

1 ответ

Ответ, базирующийся от GitHub - auth0/jwt-decode. Измененный ввод/вывод для включения строкового разделения и эхо-сигнала {заголовок, полезная нагрузка, подпись}, таким образом, можно просто передать целый маркер.

var jwtDecode = function (jwt) {

        function b64DecodeUnicode(str) {
            return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {
                var code = p.charCodeAt(0).toString(16).toUpperCase();
                if (code.length < 2) {
                    code = '0' + code;
                }
                return '%' + code;
            }));
        }

        function decode(str) {
            var output = str.replace(/-/g, "+").replace(/_/g, "/");
            switch (output.length % 4) {
                case 0:
                    break;
                case 2:
                    output += "==";
                    break;
                case 3:
                    output += "=";
                    break;
                default:
                    throw "Illegal base64url string!";
            }

            try {
                return b64DecodeUnicode(output);
            } catch (err) {
                return atob(output);
            }
        }

        var jwtArray = jwt.split('.');

        return {
            header: decode(jwtArray[0]),
            payload: decode(jwtArray[1]),
            signature: decode(jwtArray[2])
        };

    };
0
ответ дан 23 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: