栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot入门笔记9

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot入门笔记9

登录功能实现


LoginController.java

package com.hiss.springboot03web.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;
import org.thymeleaf.util.StringUtils;

@Controller
public class LoginController {

    @RequestMapping("/user/login")
    public String login(
            @RequestParam("username") String username,
            @RequestParam("password") String password,
            Model model){

        //具体的业务
        if(!StringUtils.isEmpty(username) && "123456".equals(password)){
            return "dashboard";    //简单的验证为: 用户名不为空且密码为123456 就进入首页

        }else {
            model.addAttribute("msg","用户名或密码错误");
            return "index";
        }
    }
}

效果如下:
1.失败

2.成功

但 可以发现此时 跳转成功后 页面的url会暴露用户名密码 所以 找映射资源

所以 登录成功后 重定向到mian.html

效果如下:

但此时 无论登录与否 都可以进入main.html页面 所以引入:

拦截器


获取用户session

LoginHandlerInterceptor.java

package com.hiss.springboot03web.config;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//只要写了这个接口的方法就是一个拦截器,拦截器里面要重写几个方法
public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //登录成功之后应该有用户的session
        Object loginUser = request.getSession().getAttribute("loginUser");

        if (loginUser==null) {    //没有登录
            request.setAttribute("msg", "没有权限,请先登录");
            request.getRequestDispatcher("/index.html").forward(request, response);
            return false;     //不放行
        }else {
            return true;      //放行
        }
    }
}

配置到bean里注册

@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor())
                .addPathPatterns("/**")   //拦截所有请求
                .excludePathPatterns("/index.html","/","/user/login","/css/*","/js/**","/img/**");    //这些请求不被拦截
    }

效果如下:(不可以直接访问main.html)

附:Microsoft Edge清理session方法

将dashboard页面的company改为用户session里的名字

                                                               参考资料:狂神说
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号