面试题:前端里面的用户权限

面试题:前端里面的用户权限

用户权限

用户权限是指限制具备不同身份或角色的用户在系统或应用中所能执行的操作。在前端开发中,用户权限通常通过使用Access Token和Auth Token来实现许可授权管理。

Access Token

Access Token是一种由服务端生成的代表客户端获得授权的令牌,它允许客户端对资源进行有限的操作。Access Token可以设置失效时间,安全地存储在客户端,只会在需要时发送到服务器。

使用Access Token实现用户权限的流程基本如下:

  1. 登录:用户提供用户名或电子邮件地址和密码,服务器验证成功后返回一个Access Token。
  2. 授权:在服务器上检查Access Token并确认用户拥有接受请求所需的权限时,将允许参数传递给请求方(例如:数据API)。
  3. 注销:当用户注销时,服务器将撤销匹配Access Token的所有特权。

下面是具体的代码演示:

// 登录获取token
async function login(username, password) {
  const response = await fetch('/api/login', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({username, password})
  });
  const data = await response.json();
  return data.access_token;
}

// 发送请求时带上 token
async function fetchData(url, authToken) {
  const response = await fetch(url, {
    headers: {'Authorization': `Bearer ${authToken}`}
  });
  const data = await response.json();
  return data;
}

// 示例使用方法
const myToken = await login('myusername', 'mypassword');
const myData = await fetchData('/api/data', myToken);

Auth Token

Auth Token是一种加密令牌,它根据用户名、密码和其他信息生成,并在程序执行期间持久存在。Auth Token通常存储在客户端的cookie或localStorage中,并在将来的请求中作为头部附加到每个HTTP请求中。当服务器接收到一个带有AuthToken的请求时,会对这个Token进行验证。如果通过验证,服务器会识别请求者并授权其访问资源。否则就需要登录验证。

使用Token时需要确保Token不容易被伪造或受到攻击,同时还需要定期更新Token以保证安全性。

下面是具体的代码演示:

// 创建auth token
function createAuthToken(username, password) {
  const encodedUsernameAndPassword = btoa(`${username}:${password}`);
  return `Basic ${encodedUsernameAndPassword}`;
}

// 发送请求时带上 token
async function fetchData(url, authToken) {
  const response = await fetch(url, {
    headers: {'Authorization': authToken}
  });
  const data = await response.json();
  return data;
}

// 示例使用方法
const myToken = createAuthToken('myusername', 'mypassword');
const myData = await fetchData('/api/data', myToken);

总的来说,使用Access Token和Auth Token都可以实现用户权限管理。在实际开发中需根据具体情况选择适合的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值