1.后端为什么采用token机制进行幂等性校验而不用订单号?

后端采用token机制进行幂等性校验是因为订单号可能会重复,而token机制则可以保证请求的唯一性。

当用户发送相同的请求时,如果采用订单号进行幂等性校验,则可能会出现两个请求共用同一个订单号的情况,导致请求被错误地处理或者出现数据混乱等问题。相反,使用token机制可以保证每个请求都是唯一的,即使是相同的请求,通过生成不同的token也能够区分开来,并且不会出现重复的情况。

除此之外,token机制还具有以下几个优点:

  1. 安全性高:token可以在服务端生成并在响应中返回,只有拥有正确的token才能成功认证用户身份和请求合法性。
  2. 灵活性强:token可以包含一定数量的元数据(如过期时间、用户角色、权限等),该特性为其他各种需要识别客户身份和权限的安全机制提供了极大的灵活性。
  3. 高效性好:与订单号不同,通常选择使用随机数或者UUID等方式生成token,这些方法不用涉及到查询系统中是否已存在某个值的操作,从而减少了幂等性校验所需的时间和系统负载。

因此,后端使用token机制而不是订单号进行幂等性校验可以更好地保证请求的唯一性和安全性,同时还具有更好的灵活性和高效性。

2.为什么采用Redis来存储token?

使用Redis来存储token的主要原因是Redis拥有高速、可扩展和可靠的内存存储机制,适合用于快速缓存和读取数据。

对于大规模的应用程序来说,需要支持并发请求,保证稳定和快速响应时间,而Redis提供了基于内存存储的高效解决方案。相比于传统的数据库,Redis可以处理更多的请求,并提供更快的响应和更低的延迟。

另外,Redis还具有以下几个优点:

  1. 支持TTL过期:在Redis中,可以为每个key设置存活时间,一旦超过了指定时间,Redis会自动清除相应的键值对,从而避免了内存泄漏等问题。
  2. 内存持久化:Redis支持把内存中的数据持久化到磁盘上,以便断电或系统崩溃时可以恢复数据。
  3. 数据类型丰富:Redis支持多种数据类型,如字符串、哈希、列表等,可以根据实际需求灵活地选择不同的数据类型。

综上所述,Redis提供了高速、可扩展和可靠的内存存储机制,特别适合用于快速缓存和读取数据,因此使用Redis来存储token可以提高应用程序的性能和可靠性,从而更好地支持大规模的并发请求。

3.项目分为前台用户和后台管理,他们的权限是怎么分离的

在项目中,前台用户和后台管理的权限一般是通过RBAC(基于角色的访问控制)来进行分离的。

RBAC基于三个基本概念:

  1. 角色:角色是对用户职责、权限、业务职能等的抽象描述,具有一定的权力和范围。不同的角色拥有不同的权限集合。
  2. 权限:权限是指应用程序允许的数据操作、视图访问和功能执行等操作,如创建、读取、更新和删除等。
  3. 用户:用户是指系统中使用业务服务的主体,可以分配一个或多个角色,从而获得相应的权限。用户只能通过所属角色的权限范围和授权方式执行系统操作。

针对前台用户和后台管理这两个角色,一般可以进行如下的权限管理:

  1. 前台用户权限:前台用户一般只有部分页面和功能的权限,如注册、登录、查看个人信息、修改密码等。因此,前台用户可以被分配到一个普通用户角色,该角色只有特定的操作权限。
  2. 后台管理权限:后台管理人员通常拥有更高的权限,可以管理整个系统并对敏感数据进行操作,如添加、删除、修改、查询、审核等。因此,可以将后台管理人员分配到管理员角色,并赋予与其职责和业务相关的完整的权限。

通过RBAC的实现,可以确保前台用户和后台管理的权限分离,从而有效地提高信息系统的安全性和稳定性。但是,在使用RBAC时需要注意,必须正确对角色、权限和用户进行建模,并合理地对角色和权限进行划分,避免一方面过度授权导致安全问题,另一方面过于保守单一角色引起管理不便。