Springboot登录功能,拦截器

大二 专栏收录该内容
30 篇文章 1 订阅

登录功能

Controller:
在这里插入图片描述

拦截器:

controller:

  @GetMapping("/login")
    public String login(){
        return "login";
    }
    @RequestMapping("/tologin")
    public String tologin(@RequestParam("username") String username,
                          @RequestParam("password") String password,
                          Model model, HttpSession session){
        if (!StringUtils.isEmpty(username) && "123456".equals(password)){
            session.setAttribute("loginUser",username);        //登录成功后session获取到值
            return "redirect:/index";
        }else {
            model.addAttribute("msg","用户名或密码错误");
            return "login";
        }
}

config
LoginHandlerIntercaptor

public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //登录成功后应该有用户的session
        Object loginUser = request.getSession().getAttribute("loginUser");    //loginUser接收session的值
        if(loginUser==null){     //如果没有登录                                    //如果loginUser session的值为空,返回主页面登录
            request.setAttribute("msg","请先返回主页面登录");
            request.getRequestDispatcher("/login.html").forward(request,response);  //只要执行到此语句之后则立刻进行跳转,可以传递request属性。服务器端跳转,地址栏内容不变(即客户端浏览器的地址栏不会显示跳转后地址的URL)。客户端请求到达以后,服务器发现当前资源给不出回应,要在服务器内部请求另一个资源的跳转,即服务器端跳转。所以,这种跳转与否客户端不知道(URL不变),属于一次request。
            return false;
        }else {
            return true;
        }
    }
}

config
MyConfig

 @Override
    public void addInterceptors(InterceptorRegistry registry) {       //拦截器
        registry.addInterceptor(new LoginHandlerInterceptor())        //获取
                .addPathPatterns("/**")   //拦截全部
                .excludePathPatterns("/login.html","/tologin","/img/**","/layui/**","/style.css");  //放行的功能
        }

登录页面:login
使用了layui组件

<body>
<div class="box">
    <h2>后台管理</h2>
    <p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
    <form action="tologin" method="post">
        <div class="inputBox">
            <input type="text" name="username" required="">
            <label>Username</label>
        </div>
        <div class="inputBox">
            <input type="password" name="password" required="">
            <label>password</label>
        </div>
        <input type="submit" name="" value="登录">
        <input type="submit" value="注册" style="float:right;">
    </form>

</div>
<!-- 你的HTML代码 -->

<script src="./layui/layui.js"></script>
<script>
    //一般直接写在一个js文件中
    layui.use(['layer', 'form'], function(){
        var layer = layui.layer
            ,form = layui.form;

        // layer.msg('Hello World');
    });
</script>
</body>

直接请求index,失败返回登录页面
在这里插入图片描述
输入账号密码,登录成功,进入index页面
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值