【问题标题】:How to split response text?如何拆分响应文本?
【发布时间】:2017-10-23 15:05:33
【问题描述】:

在我的应用程序中,我尝试添加 JWT 安全性。在响应文本中,我添加了用户和用户名的权限。一切正常,但如果我尝试拆分响应文本,它就不起作用。

login(username: string, password: string): Observable<boolean> {
    return this.http.post(AUTH_USER_PATH, JSON.stringify({username: username, password: password}),
        this.getPlainRequestOptions())
        .map((response: Response) => {


            let token: string = response.headers.get('Authorization').slice(7); //working
            let authorities: string[] = JSON.parse(response.text().split('|')[0]); //not working
            let username: string = JSON.parse(response.text().split('|')[1]); //not working


            console.log(authorities);
            console.log(username);
            if (token) {
                localStorage.setItem('token', JSON.stringify(token));
                localStorage.setItem('authorities', response.text());
                localStorage.setItem('username', response.text());
                return true;
            } else {
                return false;
            }
        })
        .catch((error: any) => Observable.throw(error));
}

如果我不使用拆分,那么在控制台中我会看到:

[ROLE_USER, ROLE_ADMIN]|user1

如何轻松拆分这个字符串(数组)来得到这个结果?

authorities = [ROLE_USER, ROLE_ADMIN];
username = "user1";

【问题讨论】:

  • 根据您写的内容,您不会将[ROLE_USER, ROLE_ADMIN] 的数组放入authoritiesresponse.text().split('|')[0] 应该给你一个字符串"[ROLE_USER, ROLE_ADMIN]",你可以进一步解析成一个数组。
  • 但是在我添加这个拆分之后,控制台中什么都没有显示。我无法登录。

标签: java angular token


【解决方案1】:

该 |当涉及到正则表达式时,字符是一个特殊字符。 尝试使用 \

转义特殊字符

让权威:string[] = JSON.parse(response.text().split('\|')[0]);

这是一个可以帮助What special characters must be escaped in regular expressions?的链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2019-03-06
    • 1970-01-01
    • 2021-10-04
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多