当前位置: 首页 > news >正文

旅游网站建设毕业设计有了域名如何建设网站

旅游网站建设毕业设计,有了域名如何建设网站,wordpress 格子主题,朋友圈营销广告#x1f3e1;浩泽学编程#xff1a;个人主页 #x1f525; 推荐专栏#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 #x1f6f8;学无止境#xff0c;不骄不躁#xff0c;知行合一 文章目录 前言一、分布… 浩泽学编程个人主页 推荐专栏《深入浅出SpringBoot》《java对AI的调用开发》              《RabbitMQ》《Spring》《SpringMVC》 学无止境不骄不躁知行合一 文章目录 前言一、分布式Session问题Redis集中管理Session 二、用户校验问题自定义用户参数MVC拦截器 总结 前言 主要讲解Redis集中管理Session存储用户登录信息解决分布式Session问题自定义用户参数配合MVC拦截器实现控制层入参前进行用户校验解决每层用户接口都要做用户校验问题。 一、分布式Session问题 在实现用户登录时我们需要注意的就是就是用户权限带来的用户登录状态问题在大多数项目中应用采用Nginx反向代理这会存在一种情况——用户信息在Tomcat1登录之后用户信息放在Tomcat1的Session里过一会请求又被Nginx分发到Tomcat2上这是Tomcat2上Session里还没有用户信息于是又要登录。 解决方案有很多 Session复制 优点 无需修改代码只需要修改Tomcat配置 缺点 Session同步传输占用内网带宽多台Tomcat同步性能指数级下降Session占用内存无法有效水平扩展 前端存储 优点 不占用服务器端内存 缺点 存在安全风险数据大小受到cookie限制占用外网带宽 Session粘滞 优点 无需修改代码服务器端可以水平扩展 缺点 增加新机器会重新Hash导致重新登录应用重启需要重新登录 Redis集中管理Session 这里采用Redis集中管理所有Session即多个地方从一个地方Redis中获取信息。当然大家也可以使用SpringSession实现分布式Session。实现登录时将用户信息存入Redis这里只是实现了简单的集中储存用户信息并没有对于Redis集中管理Session我在做黑马点评时记录过很完善可以看看短信登录实现黑马点评 Redis配置类键值对序列化 /*** Version: 1.0.0* Author: Dragon_王* ClassName: RedisConfig* Description: Redis配置类* Date: 2024/1/25 15:32*/ Configuration public class RedisConfig {Beanpublic RedisTemplateString,Object redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplateString,Object redisTemplate new RedisTemplate();//key序列化redisTemplate.setKeySerializer(new StringRedisSerializer());//value序列化redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());//hash的key序列化redisTemplate.setHashKeySerializer(new StringRedisSerializer());//hash的value序列化redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());//注入连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;} }登录逻辑 /*** Version: 1.0.0* Author: Dragon_王* ClassName: IUserServiceImpl* Description: 登录处理* Date: 2024/1/23 15:52*/ Service Primary public class IUserServiceImpl extends ServiceImplUserMapper, User implements IUserService {Autowiredprivate UserMapper userMapper;Autowiredprivate RedisTemplate redisTemplate;/**** Description: 登录* param loginVo* methodName: doLogin* return: com.example.seckill.vo.RespBean* Author: dragon_王* Date: 2024-01-23 17:38:35*/Overridepublic RespBean doLogin(LoginVo loginVo, HttpServletRequest request, HttpServletResponse response) {String mobile loginVo.getMobile();String password loginVo.getPassword();//根据手机号获取用户User user userMapper.selectById(mobile);if (null user) {throw new GlobalException(RespBeanEnum.LOGIN_ERROR);}//判断密码是否正确if (!MD5Util.formPassToDBPass(password,user.getSalt()).equals(user.getPassword())){throw new GlobalException(RespBeanEnum.LOGIN_ERROR);}//生成cookieString ticket UUIDUtil.uuid();redisTemplate.opsForValue().set(user: ticket,user);CookieUtil.setCookie(request,response,userTicker,ticket);return RespBean.success();}/**** Description: 根据cookie获取用户* param userTicker* methodName: getUserByCookie* return: com.example.seckill.pojo.User* Author: dragon_王* Date: 2024-01-25 16:03:14*/Overridepublic User getUserByCookie(String userTicker,HttpServletRequest request,HttpServletResponse response) {if (StringUtils.isEmpty(userTicker)){return null;}User user (User) redisTemplate.opsForValue().get(user: userTicker);if (user ! null) {CookieUtil.setCookie(request,response,userTicker,userTicker);}return user;} }主要看如下代码 //在账号密码正确后随机生成UUID将 “user”UUID 作为用户信息唯一key值并存入redis中这里我的cookie里存了一份UUID因为Cookie存在于服务器或本地不同于Session(只能存在于服务器)在使用应用程序时不管请求在哪个tomcat而用户在自己浏览器或本地上的信息能获取到。CookieUtil是自定义封装的cookie存取的工具类。String ticket UUIDUtil.uuid();redisTemplate.opsForValue().set(user: ticket,user);CookieUtil.setCookie(request,response,userTicker,ticket);return RespBean.success();//如果Cookie里没有就说明用户没登陆过因为我在登录时已经存过当前用户随机生成的UUID作为Cookie没有的话就会返回空有就根据当前用户UUID获取存在redis中的序列化的用户信息public User getUserByCookie(String userTicker,HttpServletRequest request,HttpServletResponse response) {if (StringUtils.isEmpty(userTicker)){return null;}User user (User) redisTemplate.opsForValue().get(user: userTicker);if (user ! null) {CookieUtil.setCookie(request,response,userTicker,userTicker);}return user;}在黑马点评实现登录时关于分布式Session用到了token刷新就是在用户登录时将用户信息存储到redis中所谓token值使用的就是UUID同时token也作为redis中的key值并且设置过期时间但是这里有个刷新机制就是设置拦截器——当用户访问某个页面时就自动刷新过期时间使得如果用户一直在操作就不会突然过期详细看那篇文章这里不再补充。 二、用户校验问题 对于用户操作会有权限限制即判断用户是否登录如果每层用户业务接口都做用户校验会太过麻烦所以可以自定义用户参数在每次controller层入参之前就去做拦截校验。 自定义用户参数 /*** Version: 1.0.0* Author: Dragon_王* ClassName: UserArgumentResolve* Description: 自定义用户参数* 获取用户是否登录* Date: 2024/1/25 16:31*/ Component public class UserArgumentResolve implements HandlerMethodArgumentResolver {Autowiredprivate IUserService userService;Overridepublic boolean supportsParameter(MethodParameter parameter) {Class? parameterType parameter.getParameterType();return parameterType User.class;}Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {HttpServletRequest request webRequest.getNativeRequest(HttpServletRequest.class);HttpServletResponse response webRequest.getNativeRequest(HttpServletResponse.class);String ticker CookieUtil.getCookieValue(request, userTicker);if (StringUtils.isEmpty(ticker)){return null;}return userService.getUserByCookie(ticker,request,response);} }解释supportsParameter函数判断参数类型是否为User类型是的的话执行resolveArgument函数resolveArgument函数则会先查询当前cookie里是否有用户信息没有的话返回空有的话返回用户通过校验。 MVC拦截器 /*** Version: 1.0.0* Author: Dragon_王* ClassName: WebConfig* Description: MVC配置类* Date: 2024/1/25 16:27*/ Configuration EnableWebMvc public class WebConfig implements WebMvcConfigurer {Autowiredprivate UserArgumentResolve userArgumentResolve;Overridepublic void addArgumentResolvers(ListHandlerMethodArgumentResolver resolvers) {resolvers.add(userArgumentResolve);} }这样设置后以后Controller层接口传参只需要有User类型对象自动校验用户状态判断用户是否属于登录状态。 总结 以上就是Redis集中管理Session存储用户登录信息解决分布式Session问题自定义用户参数配合MVC拦截器实现控制层入参前进行用户校验解决每层用户接口都要做用户校验问题的讲解。
http://www.tj-hxxt.cn/news/231576.html

相关文章:

  • 代做网站的好处如何给自己公司设计logo
  • 宁夏网站设计在哪里地图制作网站
  • 做二手交易网站如何盈利wordpress采集小说数据
  • 德清建设银行网站兰州工程建设信息网站
  • 唐山门户网站建设网络营销策划推广公司有哪些
  • 安徽省建设厅网站域名北京好的做网站的公司哪家好
  • 做康复医院网站谷歌浏览器免费入口
  • 山东济铁工程建设集团有限公司网站江苏招标网
  • 网站布局有哪些常见的免费app制作网站
  • 做网上推广网站中小企业网站建设客户需求调查问卷
  • 在线培训网站网站建设员是做什么的
  • wordpress博客漏洞巩义网站建设方式优化
  • 网站编程软件有哪些北京十大活动策划公司
  • 房产集团网站建设wordpress商品展示模块
  • 建设银行网站 个人客户端wordpress置顶文章 插件
  • 西安专业承接网站搭建模板织梦网站产品
  • 电子商务网站建设用什么登录网络规划设计师教程(第2版)
  • 南通网站建设top自己可以免费做网站吗
  • 网站开发及流行框架thinkphpcmf网站开发
  • 网站设计构想为网站网站做宣传
  • 长沙商城网站建设有趣的个人网站
  • 自己怎么做直播网站吗用电脑做网站服务器
  • 做中医诊所网站百度不喜欢wordpress
  • 空白网站怎么建百度做的网站后台怎么更新
  • 免费的网站推广渠道响应式网站企业
  • 山东济南seo整站优化费用网站推广风险
  • 门户网站产品设计方案策划书模板范文
  • 岫岩做网站微信公众号开发教程
  • 怎么做微信钓鱼网站吗电子商务推广方式有哪些
  • 湛江城市建设培训中心网站网页设计课程安排