SpringBoot狂神10-(员工管理系统-登录功能实现)

(四)登录功能的实现


登录,也就是当我们点击登录按钮的时候,会进入一个页面,这里进入dashboard页面

因此我们首先在index.html中的表单编写一个提交地址/user/login,并给名称和密码输入框添加name属性为了后面的传参SpringBoot狂神10-(员工管理系统-登录功能实现)

然后编写对应的controller

在主程序同级目录下新建controller包,在其中新建类loginController,处理登录请求

package com.zsr.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class LoginController {
    @RequestMapping("/user/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model) {
        //如果用户名和密码正确
        if ("admin".equals(username) && "123456".equals(password))
            return "dashboard";//跳转到dashboard页面
            //如果用户名或者密码不正确
        else {
            model.addAttribute("msg", "用户名或者密码错误");//显示错误信息
            return "index";//跳转到首页
        }
    }
}

然后我们在index.html首页中加一个标签用来显示controller返回的错误信息

<p style="color: red" th:text="${msg}"></p>

SpringBoot狂神10-(员工管理系统-登录功能实现)我们再测试一下,启动主程序,访问localhost:8080

如果我们输入正确的用户名和密码SpringBoot狂神10-(员工管理系统-登录功能实现)

 则重新跳转到dashboard页面,浏览器url为http://localhost:8080/user/login?username=admin&password=123456SpringBoot狂神10-(员工管理系统-登录功能实现)

 

随便输入错误的用户名12,输入错误的密码12

浏览器url为http://localhost:8080/user/login?username=12&password=123456,页面上附有错误提示信息SpringBoot狂神10-(员工管理系统-登录功能实现)

 

到此我们的登录功能实现完毕,但是有一个很大的问题,浏览器的url暴露了用户的用户名和密码,这在实际开发中可是重大的漏洞,泄露了用户信息,因此我们需要编写一个映射

我们在自定义的配置类MyMvcConfig中加一句代码

registry.addViewController("/main.html").setViewName("dashboard");

也就是访问/main.html页面就跳转到dashboard页面

然后我们稍稍修改一下LoginController,当登录成功时重定向到main.html页面,也就跳转到了dashboard页面

package com.zsr.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class LoginController {
    @RequestMapping("/user/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model) {
        //如果用户名和密码正确
        if ("admin".equals(username) && "123456".equals(password))
            return "redirect:/main.html";//重定向到main.html页面,也就是跳转到dashboard页面
            //如果用户名或者密码不正确
        else {
            model.addAttribute("msg", "用户名或者密码错误");//显示错误信息
            return "index";//跳转到首页
        }
    }
}

我们再次重启测试,输入正确的用户名和密码登陆成功后,浏览器不再携带泄露信息

但是这又出现了新的问题,无论登不登陆,我们访问localhost/main.html都会跳转到dashboard的页面,这就引入了接下来的拦截器

上一篇:k8s搭建


下一篇:__file__ __all__ __doc__