APP使用手机号和验证码登陆的,现在有一个用户可以修改手机号的功能。修改手机号之后应该给APP交换token还是应该给用户退出登录重新用引导登陆比较好?两种方案在技术上或产品上比较有什么优劣?
两种方案都是可行的。
如果用户修改手机号后直接交换token,可能会存在一些安全隐患,因为此时用户的旧手机号可能已经被其他人注册或使用,如果其他人恶意使用该手机号登录,就会获取到该用户的账户信息和权限。
因此,建议在用户修改手机号后,让用户重新登录并验证新手机号,以确保账户安全。
并且如果用户修改手机号后直接交换token,可能会导致用户在多个设备上同时登录,这可能会影响用户体验。
所以建议在用户修改手机号后,让用户退出登录并重新登录,以确保账户安全和用户体验。
回答引自chatgpt
建议还是应该让用户重新登录,这样可以保证系统的安全性和稳定性。具体原因如下:
1 安全性考虑
如果用户更改了手机号,但是依然使用之前的token登录,那么就会存在一定的安全隐患。比如,如果之前的手机号被盗用或者泄露了,那么攻击者就可以使用之前的token来登录用户的账号,获取用户的个人隐私信息或者进行其他恶意操作。因此,为了保证系统的安全性,最好是让用户重新登录,获取一个新的token,从而避免之前的token被滥用。
2 稳定性考虑
如果用户更改了手机号,但是依然使用之前的token登录,那么可能会导致系统出现一些异常情况。比如,如果系统中存在一些依赖于手机号的业务逻辑,那么当用户更改了手机号之后,这些业务逻辑可能会出现问题,从而引发系统的异常或者崩溃。因此,为了保证系统的稳定性,最好是让用户重新登录,从而刷新系统中的相关信息,避免出现问题。
3 用户体验考虑
虽然让用户重新登录可能会给用户带来一些不便,但是从用户体验的角度来看,也是比较可控的。如果用户已经熟悉了APP的使用方式,那么重新登录的过程也不会花费太多时间和精力。同时,让用户重新登录还可以提醒用户更改手机号的操作已经完成,从而避免用户忘记退出登录,引发其他问题。
技术上的优劣:
给APP交换token
优点:该方案可以保持用户的登录状态,无需让用户重新登录,从而提高用户的使用体验。
缺点:该方案可能会引发一些安全问题,因为之前的token可能已经过期或者被盗用,如果用户使用之前的token进行操作,可能会导致一些安全隐患。同时,该方案也需要在技术上实现一些额外的逻辑,以确保token的有效性和安全性。
让用户退出登录重新登录
优点:该方案可以确保系统的安全性和稳定性,避免出现一些潜在的安全风险和异常情况。同时,该方案也比较简单,无需在技术上实现太多的额外逻辑。
缺点:该方案可能会影响用户的使用体验,因为用户需要重新登录,从而需要输入手机号和验证码等信息。如果用户频繁更改手机号,可能会引起用户的不满和抱怨。
产品上的优劣:
给APP交换token
优点:该方案可以提高用户的使用体验,因为用户无需重新登录,可以直接使用APP进行操作。同时,该方案也可以提高用户的粘性和忠诚度。
缺点:该方案可能会引起一些安全问题,从而对用户的个人信息造成一定的威胁。如果出现安全问题,可能会严重损害用户的信任和忠诚度。
让用户退出登录重新登录
优点:该方案可以确保用户的个人信息和资产安全,避免出现潜在的安全风险和异常情况。同时,该方案也比较简单,无需在产品上实现太多的额外逻辑。
缺点:该方案可能会影响用户的使用体验,从而降低用户的粘性和忠诚度。如果用户频繁更改手机号,可能会导致用户的流失和抱怨。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,
它相当于数据的id,给与数据一个唯一的标识,它的出现主要目的是解决服务器频繁请求用户姓名以及密码的问题;
它的作用是减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
// 请求登录接口并传递参数
this.$ClientAPI
.loginGetToken(obj)
.then((res) => {
console.log(res.data.data);
var token = res.data.data.remember_token; //读取token
var mobile = res.data.data.mobile;
localStorage.setItem("mobile", mobile);
localStorage.setItem("token", token); //保存token
localStorage.setItem("value", "admin");
Toast.success({
message: "登录成功",
position: "top",
});
this.$router.push("/mine"); //跳转到我的页面
})
.catch((err) => {
console.log(err);
Toast.fail({
message: "登录失败",
position: "top",
});
});