0

尝试使用 JWT 开发我的应用程序的访问控制,我遵循我在社区中找到的一些建议,我正在通过服务器端的这两个函数(PHP Restfull API)对令牌部分进行编码和解码:

static function base64Url_encode( $val ){
    return strtr(base64_encode( $val ), '+/=', '-_,');
}

static function base64Url_decode( $val ){
    return base64_decode( strtr($val , '+/=', '-_,') );
} 

但是从客户端(Angular2),我无法解码它并收到以下错误消息:

Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

在通过社区搜索后,我决定这样做:

let encodedPayload = this.token.split('.')[1];
let payload = encodedPayload.replace(/-/g, '+').replace(/_/g, '/').replace(/,/g,'=');

它工作正常,但我相信有更好的方法。

有没有比嵌套替换函数更好的解码返回字符串的解决方案?

4

0 回答 0