问题描述
我有问题。因此,我正在创建一个 angular 应用程序,用户需要对其进行验证、批准并具有角色。基本上我有 3 个变量:isApproved、role 和 isValidated。我还有一个用于身份验证和授权的 JWT 令牌。我应该如何使这 3 个变量持久化?我想向用户展示不同的页面,如果他们经过验证,或者如果他们只被批准,或者如果他们只有一个特定的角色并且他们被验证但没有被批准,等等。 我正在考虑将它们存储在本地存储中,但用户可以更改那里的值。我认为的另一种方法是,每次用户刷新页面时,都会调用一个 API,从后端为我提供这 3 个变量,但我不知道这是否是一个好方法。或者有什么方法可以从令牌中获取值?像使用声明或其他东西,并在客户端解码令牌以获取值? 如果可以,请你帮助我。谢谢,祝你有美好的一天! ?
解决方法
验证、认证和……仅在客户端执行不是一个好主意。您还必须检查后端的任何请求。例如,您将数据存储在客户端的本地存储中。如果用户更改了本地值,您会在后端再次检查,这可以防止出现安全问题。在后端进行双重检查并不是一件坏事,在许多用例中你应该这样做。一种方法是索赔。如果您的后端负载很高,您可以使用内存缓存。但是,如果您使用 jwt 并将数据存储在具有默认 asp 核心 jwt 提供程序的声明中,因为它不是注销机制,您就会遇到麻烦。如果您在声明中使用身份存储数据是一种好方法,而且它也具有可扩展性。