zoukankan      html  css  js  c++  java
  • 常见开发场景实现思路与解决方案

    1.认证与授权实现思路

      如果系统的模块众多,每个模块都需要就行授权与认证,所以我们选择基于token的形式进行授权与认证,用户根据用户名密码认证成功,然后获取当前用户角色的一系列权限值,并以用户名为key,权限列表为value的形式存入redis缓存中,根据用户名相关信息生成token返回,浏览器将token记录到cookie中,每次调用api接口都默认将token携带到header请求头中,Spring-security解析header头获取token信息,解析token获取当前用户名,根据用户名就可以从redis中获取权限列表,这样Spring-security就能够判断当前请求是否有权限访问

    2.购物车实现思路

    1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的.
    2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cookie中的购物车商品已经被删除了, 所以此时购物车中的商品不在了.
    3)用户登录, 添加商品,此时商品被添加到数据库做了持久化存储, 再次打开登录用户名和密码,该用户选择的商品肯定还是存在的, 所以购物车中的商品还是存在的.

    3.一个小时内最多只能发送十条短信实现思路

    方案1:每次发送一条短信存入数据库记录,主要字段有发送时间和手机号,然后,发送短信前通过数据库查询当前时间一个小时内是否已经发送十条短信,如果大于10,则不能发送。

    方案2: 每次发送短信时将时间戳存入redis的list中,key为手机号,然后每次发送短信前获取redis中是所有时间戳,并对时间戳进行排序,根据次数限制,比如十次来截取list,计算第一个元素和最后一个元素的差值,若差值小于1小时,则不能发送。

    一点点学习,一丝丝进步。不懈怠,才不会被时代所淘汰!

  • 相关阅读:
    JDK框架简析--java.lang包中的基础类库、基础数据类型
    Mahout 模糊kmeans
    使用heartbeat+monit实现主备双热备份系统
    Git版本号控制:Git分支处理
    JAVA线程
    Nginx的特性与核心类别及配置文件和模块详解
    nginx设置反向代理后端jenklins,页面上的js css文件无法加载
    运维的危险命令,用了必死(1)
    xtrabackup备份MySQL
    利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
  • 原文地址:https://www.cnblogs.com/fqh2020/p/14824075.html
Copyright © 2011-2022 走看看