在Angular OIDC中,silentRenew和useRefreshToken是两个常见的功能,用于在认证阶段中自动更新和获取新的访问令牌。下面给出使用代码示例来说明它们的工作原理:
使用silentRenew,可以在访问令牌过期时调用令牌过期续约端点来获取新的令牌,而不必要求用户重新登录。以下是silentRenew的示例:
... import { UserManager } from 'oidc-client';
const settings = { authority: 'https://localhost:5001', client_id: 'angular_client', scope: 'openid profile email', redirect_uri: 'http://localhost:4200/signin-callback', response_type: 'id_token token', automaticSilentRenew: true, silent_redirect_uri: 'http://localhost:4200/silent-refresh.html', };
const mgr = new UserManager(settings);
mgr.getUser().then((user) => { if (user) { console.log(user); } else { mgr.signinSilent().then((user) => { console.log(user); }); } });
...
在此示例中,automaticSilentRenew被设置为true,这意味着在访问令牌过期时,将自动调用令牌过期续约端点。如果您还设置了silent_redirect_uri,将使用该地址进行过期续约并获取新的访问令牌。
使用useRefreshToken,可以使用刷新令牌来获取新的访问令牌。下面是useRefreshToken的示例:
... import { UserManager } from 'oidc-client';
const settings = { authority: 'https://localhost:5001', client_id: 'angular_client', scope: 'openid profile email', redirect_uri: 'http://localhost:4200/signin-callback', response_type: 'id_token token', automaticSilent