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

网站登录到wordpress关键词分析

网站登录到wordpress,关键词分析,渠道网格化管理,哪个网站上可以做初中数学题目录 一、User类 二、ThreadLocal类 三、用户业务逻辑接口 四、用户业务逻辑接口实现类 五、用户控制层 六、用户登录拦截器 七、拦截器配置类 八、隐藏敏感信息的代码调整 完整的项目资源共享地址,当中包含了代码、资源文件以及Nginx(Wi…

目录

一、User类

二、ThreadLocal类 

三、用户业务逻辑接口 

四、用户业务逻辑接口实现类 

五、用户控制层 

六、用户登录拦截器 

七、拦截器配置类 

八、隐藏敏感信息的代码调整 


完整的项目资源共享地址,当中包含了代码、资源文件以及Nginx(Windows版)和完整的配置:

链接:https://pan.quark.cn/s/5c28484d7882
提取码:cJxQ

其中对于短信登录这块代码已经做了优化,通过Redis实现短信验证码登录,想要按照Session方式进行登录来学习Session的短信验证码登录流程的,可以将工程相关代码按下述的代码进行修改调整。 

一、User类

package com.hmdp.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_user")
public class User implements Serializable {private static final long serialVersionUID = 1L;/*** 主键*/@TableId(value = "id", type = IdType.AUTO)private Long id;/*** 手机号码*/private String phone;/*** 密码,加密存储*/private String password;/*** 昵称,默认是随机字符*/private String nickName;/*** 用户头像*/private String icon = "";/*** 创建时间*/private LocalDateTime createTime;/*** 更新时间*/private LocalDateTime updateTime;}

二、ThreadLocal类 

package com.hmdp.utils;import com.hmdp.entity.User;public class UserHolder {private static final ThreadLocal<User> tl = new ThreadLocal<>();public static void saveUser(User user){tl.set(user);}public static User getUser(){return tl.get();}public static void removeUser(){tl.remove();}
}

三、用户业务逻辑接口 

package com.hmdp.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.hmdp.dto.LoginFormDTO;
import com.hmdp.dto.Result;
import com.hmdp.entity.User;import javax.servlet.http.HttpSession;public interface IUserService extends IService<User> {Result sendCode(String phone, HttpSession session);Result login(LoginFormDTO loginForm, HttpSession session);
}

四、用户业务逻辑接口实现类 

package com.hmdp.service.impl;import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hmdp.dto.LoginFormDTO;
import com.hmdp.dto.Result;
import com.hmdp.entity.User;
import com.hmdp.mapper.UserMapper;
import com.hmdp.service.IUserService;
import com.hmdp.utils.RegexUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import static com.hmdp.utils.SystemConstants.USER_NICK_NAME_PREFIX;@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Overridepublic Result sendCode(String phone, HttpSession session) {// 1.校验手机号if (RegexUtils.isPhoneInvalid(phone)) {// 2.如果不符合,返回错误信息return Result.fail("手机号格式错误!");}// 3.符合,生成验证码String code = RandomUtil.randomNumbers(6);// 4.保存验证码到 sessionsession.setAttribute("code:" + phone, code);// 5.发送验证码log.debug("发送短信验证码成功,验证码:{}", code);// 返回okreturn Result.ok();}@Overridepublic Result login(LoginFormDTO loginForm, HttpSession session) {// 1.校验手机号String phone = loginForm.getPhone();if (RegexUtils.isPhoneInvalid(phone)) {// 2.如果不符合,返回错误信息return Result.fail("手机号格式错误!");}// 2. 校验验证码Object cacheCode = session.getAttribute("code:" + loginForm.getPhone());String code = loginForm.getCode();// 3. 不一致则报错if (cacheCode == null || !cacheCode.toString().equals(code)) {return Result.fail("验证码错误");}// 4. 一致,则根据手机号查询用户User user = query().eq("phone", phone).one();// 5. 判断用户是否存在if (user == null) {// 6. 不存在则创建用户并保存createUserWithPhone(phone);}// 7. 保存用户信息到session中session.setAttribute("user", user);// 8.返回tokenreturn Result.ok();}private User createUserWithPhone(String phone) {// 1.创建用户User user = new User();user.setPhone(phone);user.setNickName(USER_NICK_NAME_PREFIX + RandomUtil.randomString(10));// 2.保存用户save(user);return user;}
}

五、用户控制层 

package com.hmdp.controller;import com.hmdp.dto.Result;
import com.hmdp.service.IUserInfoService;
import com.hmdp.service.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate IUserService userService;/*** 发送手机验证码*/@PostMapping("code")public Result sendCode(@RequestParam("phone") String phone, HttpSession session) {// 发送短信验证码并保存验证码return userService.sendCode(phone, session);}/*** 登录功能* @param loginForm 登录参数,包含手机号、验证码;或者手机号、密码*/@PostMapping("/login")public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session){// 实现登录功能return userService.login(loginForm, session);}@GetMapping("/me")public Result me(){// 获取当前登录的用户并返回User user = UserHolder.getUser();return Result.ok(user);}
}

六、用户登录拦截器 

package com.hmdp.utils;import com.hmdp.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1. 获取SessionHttpSession session = request.getSession();// 2. 获取session中的用户Object user = session.getAttribute("user");// 3. 判断用户是否存在if (user == null) {// 4. 不存在则拦截并返回401状态码response.setStatus(401);return false;}// 5. 存在则保存用户信息到ThreadLocalUserHolder.saveUser((User) user);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 移除用户UserHolder.removeUser();}
}

七、拦截器配置类 

package com.hmdp.config;import com.hmdp.utils.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 登录拦截器registry.addInterceptor(new LoginInterceptor()).excludePathPatterns("/shop/**","/voucher/**","/shop-type/**","/upload/**","/blog/hot","/user/code","/user/login");}
}

八、隐藏敏感信息的代码调整 

上述代码中存入Session中的用户信息涉及到了很多的敏感字段,如手机号、密码等,会有安全风险,所以对代码优化如下:

package com.hmdp.dto;import lombok.Data;@Data
public class UserDTO {private Long id;private String nickName;private String icon;
}
package com.hmdp.utils;import com.hmdp.dto.UserDTO;public class UserHolder {private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>();public static void saveUser(UserDTO user){tl.set(user);}public static UserDTO getUser(){return tl.get();}public static void removeUser(){tl.remove();}
}
package com.hmdp.controller;import com.hmdp.dto.LoginFormDTO;
import com.hmdp.dto.Result;
import com.hmdp.dto.UserDTO;
import com.hmdp.service.IUserInfoService;
import com.hmdp.service.IUserService;
import com.hmdp.utils.UserHolder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate IUserService userService;@Resourceprivate IUserInfoService userInfoService;/*** 发送手机验证码*/@PostMapping("code")public Result sendCode(@RequestParam("phone") String phone, HttpSession session) {// 发送短信验证码并保存验证码return userService.sendCode(phone, session);}/*** 登录功能* @param loginForm 登录参数,包含手机号、验证码;或者手机号、密码*/@PostMapping("/login")public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session){// 实现登录功能return userService.login(loginForm, session);}@GetMapping("/me")public Result me(){// 获取当前登录的用户并返回UserDTO user = UserHolder.getUser();return Result.ok(user);}
}
package com.hmdp.utils;import com.hmdp.dto.UserDTO;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1. 获取SessionHttpSession session = request.getSession();// 2. 获取session中的用户Object user = session.getAttribute("user");// 3. 判断用户是否存在if (user == null) {// 4. 不存在则拦截并返回401状态码response.setStatus(401);return false;}// 5. 存在则保存用户信息到ThreadLocalUserHolder.saveUser((UserDTO) user);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 移除用户UserHolder.removeUser();}
}


文章转载自:
http://blacklist.bbmx.cn
http://asbestos.bbmx.cn
http://tumular.bbmx.cn
http://squamaceous.bbmx.cn
http://denebola.bbmx.cn
http://dumpishness.bbmx.cn
http://elaeometer.bbmx.cn
http://dyscalculia.bbmx.cn
http://spasmic.bbmx.cn
http://tambac.bbmx.cn
http://misapplication.bbmx.cn
http://skillion.bbmx.cn
http://oddfish.bbmx.cn
http://microclimate.bbmx.cn
http://nervation.bbmx.cn
http://dreamt.bbmx.cn
http://turnside.bbmx.cn
http://pneumoencephalogram.bbmx.cn
http://bonkers.bbmx.cn
http://phylactery.bbmx.cn
http://turndown.bbmx.cn
http://windgall.bbmx.cn
http://heliograph.bbmx.cn
http://ubiquitism.bbmx.cn
http://glowingly.bbmx.cn
http://jew.bbmx.cn
http://electrosurgical.bbmx.cn
http://hepatogenous.bbmx.cn
http://unreserved.bbmx.cn
http://kilogrammeter.bbmx.cn
http://enfold.bbmx.cn
http://sclerotize.bbmx.cn
http://glomerulus.bbmx.cn
http://statism.bbmx.cn
http://falconet.bbmx.cn
http://multifold.bbmx.cn
http://gallomania.bbmx.cn
http://hebraize.bbmx.cn
http://abeokuta.bbmx.cn
http://lazaretto.bbmx.cn
http://regisseur.bbmx.cn
http://electrocorticogram.bbmx.cn
http://promote.bbmx.cn
http://tortellini.bbmx.cn
http://normalize.bbmx.cn
http://spume.bbmx.cn
http://supersensuous.bbmx.cn
http://ignitron.bbmx.cn
http://coydog.bbmx.cn
http://snidesman.bbmx.cn
http://pocosin.bbmx.cn
http://fartlek.bbmx.cn
http://nacre.bbmx.cn
http://argumentive.bbmx.cn
http://mamluk.bbmx.cn
http://bronchiectasis.bbmx.cn
http://pentamerous.bbmx.cn
http://lomentaceous.bbmx.cn
http://trifocal.bbmx.cn
http://galvanoplasty.bbmx.cn
http://conscientiously.bbmx.cn
http://pickpocket.bbmx.cn
http://pensionless.bbmx.cn
http://orgiastic.bbmx.cn
http://radiogoniometry.bbmx.cn
http://grayhound.bbmx.cn
http://shoddy.bbmx.cn
http://hoodie.bbmx.cn
http://nonperformance.bbmx.cn
http://strategetic.bbmx.cn
http://shihkiachwang.bbmx.cn
http://intarsiate.bbmx.cn
http://infinitesimal.bbmx.cn
http://esc.bbmx.cn
http://thalassian.bbmx.cn
http://smudgily.bbmx.cn
http://monostomous.bbmx.cn
http://calvados.bbmx.cn
http://wollastonite.bbmx.cn
http://demilitarise.bbmx.cn
http://gleeful.bbmx.cn
http://herniation.bbmx.cn
http://indisputability.bbmx.cn
http://listlessly.bbmx.cn
http://whereat.bbmx.cn
http://rubicund.bbmx.cn
http://legless.bbmx.cn
http://pursuant.bbmx.cn
http://hebron.bbmx.cn
http://evolutional.bbmx.cn
http://fistuliform.bbmx.cn
http://astatic.bbmx.cn
http://strikingly.bbmx.cn
http://lecture.bbmx.cn
http://atwitter.bbmx.cn
http://blest.bbmx.cn
http://clubber.bbmx.cn
http://forgettable.bbmx.cn
http://goldie.bbmx.cn
http://flowered.bbmx.cn
http://www.15wanjia.com/news/83067.html

相关文章:

  • 上海 网站开发焦作网站seo
  • 购物网站设计的意义搜索网站有哪些
  • 做网站需要什么软件重庆网站建设与制作
  • 公司做网站有问题怎么维权明星百度指数排名
  • angular 做网站鞋子软文推广300字
  • 郑州哪里有做网站的西安关键词排名软件
  • 对网站主要功能界面进行赏析百度一下你就知道了百度
  • 建立一个网站怎么做google google
  • 烟台网站建设公司网络营销公司排行
  • 用网站做数据库百度搜索大数据
  • wordpress 酒店预订娄底地seo
  • HTML建网站品牌网
  • 建网页网站宁波seo网络推广软件系统
  • 国外购物网站推荐百度推广客服电话人工服务
  • 网站里面送礼物要钱怎么做代码网络营销买什么好
  • 如何解决网站兼容太原网站建设谁家好
  • 自己来建网站seo顾问服务公司
  • 搜索网站制作教程今天发生的重大新闻
  • 重庆网站建设 渝网络策划与营销
  • lynda.com wordpress 3.5网页搜索引擎优化技术
  • 大连市工程建设信息网青岛seo关键词优化排名
  • 怎么建设淘客自己的网站、做网站哪个平台好
  • 装饰公司网站建设方案品牌策划方案案例
  • 建设一个最普通网站要多少钱seo搜索引擎优化是什么
  • 高端网站建设kgwl网络运营商
  • 洛阳建站哪家好南宁seo咨询
  • 梧州龙圩佛山网站优化服务
  • 中国网络安全公司排名网络搜索优化
  • php做p2p网站源码数据推广公司
  • 帮做动态头像的网站seo网站介绍