登录功能(基于SpringBoot+MP+Vue实现的功能)
创始人
2024-01-30 16:54:55

目录

前言

一、UserMapper层代码分析

二、UserService层代码分析

1.UserService接口

2.UserServiceImpl实现类

3.UserController层代码分析 

 4.拦截器设置

 5.展示效果图

总结


前言

      登录功能是web开发中常见的功能,也是学后端必须要练得一个功能,本次的登录功能相对完善一些,知识拦截器部分写的比较少,这部分提供给大家思考和完善相应的功能。这个功能已达到毕设的水准,基本知识点都是按照毕设的常用的知识点去编写的。


一、UserMapper层代码分析

创建接口UserMapper并实现MP的基本步骤。

@Repository
public interface UserMapper extends BaseMapper {
}

二、UserService层代码分析

1.UserService接口

创建登录所需的方法。

public interface UserService {
//    登录User login(String username, String password);
}

2.UserServiceImpl实现类

将Controller层传过来的用户名和密码先进行对密码使用MD5进行加密(数据库表存储的密码是加密后的密文,以保证用户密码的安全性),然后在进行MP的条件查询访问数据库查询该用户名和密码的用户。

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic User login(String username, String password) {//加密String passwordWithMd5 = MD5Util.md5(password);//根据用户名和加密之后的密码从数据库查询用户//select * from user where username = ? and password = ?LambdaQueryWrapper wrapper=new LambdaQueryWrapper();wrapper.eq(User::getUsername,username).eq(User::getPassword,passwordWithMd5);//返回查询结果return userMapper.selectOne(wrapper);}
}

3.UserController层代码分析 

对登录进行判断是否登录成功,给前端返回Map集合{“code”,"0"}为登录失败返回的内容。Map集合{“code”,"1"}为登录成功返回的内容。登录成功需要用JWT技术返回一个令牌(token)。

@RestController
public class UserController {@Autowiredprivate UserService userService;Map map=new HashMap<>();
//    登录@RequestMapping("/admin/user/login")public Map login(String username,String password){User user=userService.login(username,password);if(user==null){//登录失败map.put("code","0");}else {//登录成功HashMap tokenMap = new HashMap();tokenMap.put("id", user.getId());String token = JwtUtil.createToken(tokenMap);map.put("token",token);map.put("code","1");}return map;}
}

JWT 技术创建token、解析token代码。

//JWT的生成和解析
public class JwtUtil {// 创建tokenpublic static String createToken(Map claims) {return Jwts.builder().setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24))//设置有效时间为1天.setClaims(claims) //设置响应数据体.signWith(SignatureAlgorithm.HS256, "heima_movies") //设置加密方法和加密盐.compact();}// 解析tokenpublic static Map parseToken(String token) {return Jwts.parser().setSigningKey("heima_movies").parseClaimsJws(token).getBody();}
}

 4.拦截器设置

访问拦截器时查看上面的token是否存在,存在则用户登录成功状态放行,否则禁止通行返回401状态码。

//访问拦截器
@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {try {String token = request.getHeader("token");//从请求头获取tokenMap map = JwtUtil.parseToken(token);BeanUtil.mapToBean(map, Member.class, true);return true;//放行} catch (Exception e) {response.setStatus(401);return false;//禁止通行,返回401状态码}}
}

拦截器需拦截的内容和放行的路径设置。将管理员部分路径拦截不让普通用户访问。

@Configuration
public class ManagerConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;//设置拦截器@Overridepublic void addInterceptors(InterceptorRegistry registry) {//定义放行路径ArrayList urls = new ArrayList<>();urls.add("/**/*.js");//管理系统静态资源urls.add("/**/*.css");//管理系统静态资源urls.add("/**/*.jpg");//管理系统静态资源urls.add("/**/*.png");//管理系统静态资源urls.add("/**/*.html");//管理系统静态资源urls.add("/admin/user/login");//管理系统登录请求urls.add("/admin/user/logout");//管理系统退出请求//配置拦截器和路径registry.addInterceptor(loginInterceptor).addPathPatterns("/admin/**")//拦截所有.excludePathPatterns(urls); //放行指定路径}
}

 5.展示效果图

登录页,在不输入用户名和密码访问路径http://localhost:8080/index.html会跳转到登录页面,被拦截器拦截,

 输入正确的用户名和密码后跳转到主页面。

f12查看token存在的位置和值(这也是有令牌才可正常进入主功能页面)


总结

  基于SpringBoot+MP+VUE的登录功能的实现考虑的相对全面,可作为毕设的参考。但VUE方面的代码在这里没有展示。想要了解的可以自己学学Vue知识点,主要还是JWT技术的运用。还有后端的代码逻辑的分析。 

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
1秒多少毫秒 1秒等于多少毫秒... 长度单位换算1丈=10尺;1尺=10寸;1寸=10分;1分=10厘;1丈≈3.33米;1尺≈3.33...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
中国电信人工电话多少 中国电信... 当我们在使用中国移动、中国电信和中国联通提供的电信业务时,可能会发生争议。建议直接向服务提供商投诉,...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...