在Spring启动微服务中的JWT令牌中添加多个声明

时间:2018-02-20 11:17:13

标签: java spring-boot jwt

我正在尝试在我的微服务中实现基于JWT的令牌管理。我正在使用spring boot来开发服务。目前,我使用令牌创建并向我的前端角度应用程序发送响应。在这里,我只添加了主张和主题。

我的代码是这样的:

public String generateUiaToken(String encodedSecret, Users uiaToken) {
    List<Integer> roleIdList = roleRepo.findRoleById((int) uiaToken.id);
    return Jwts.builder()
            .setId(UUID.randomUUID().toString())
            .setSubject(uiaToken.getUsername())
            .signWith(SignatureAlgorithm.HS512, encodedSecret)
            .claim("Role_List", roleIdList)
            .compact();
}

这里我添加了一个带有JSON角色ID列表的声明。我的困惑是,如何添加有关此结构或声明的用户的更多数据?

任何人都可以帮助我澄清我的困惑吗?

2 个答案:

答案 0 :(得分:1)

JWT的目的是简单地对用户进行身份验证,我们不需要用JWT填充数据,因为如果验证了这一点,我们可以使用用户名查询我们需要的任何数据库。 我在expressjs中使用护照,我只是使用我的ID或用户名(两个唯一标识符)生成一个JWT,然后在我的Auth标头中按下请求,我的expressjs验证签名,如果是,我可以使用该标识符(用户名或ID) )放心地,用户自己提出了这个请求,在实际查询中检查用户权限,角色等,而不是在JWT中传递它

答案 1 :(得分:0)

您可以根据需要添加任意数量的声明。您可以通过再次调用声明来做到这一点。

import difflib

file1 = 'file1.txt'
file2 = 'file2.txt'
df_file = 'diffresult.txt'


def read():
    with open(file1, 'r') as f1, open(file2, 'r') as f2, open(df_file, 'w') as fw:
        f1_text = f1.readlines()
        f2_text = f2.readlines()
        for line in difflib.ndiff(f1_text, f2_text):
            if line.startswith('- '):
                fw.write(line[2:])


def fetchdiff():
    with open(df_file, 'r') as f:
        for line in f.readlines():
            print(line)


if __name__ == '__main__':
    read()
    fetchdiff()