spring boot 拦截器登录判断及跳转

1.使用teymeleaf及属性

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false //禁止缓存,用于开发
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.encoding=UTF-8

2.拦截器(通过session的属性name判断是否登录,登录放行,未登录记下原来的后缀路径在preurl中,然后重定向到登录页面,就是域名了,request.getRequestURL()完整路径,request.getRequestURI()后缀路径,tempContextUrl是域名,response.sendRedirect()重定向

public class Interceptor1 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception{
        HttpSession session=request.getSession();
        Object ob=session.getAttribute("name");
        if (ob!=null) {
            return true;
        }
        session.setAttribute("preurl",request.getRequestURI());
        StringBuffer url = request.getRequestURL();
        String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString();
        response.sendRedirect(tempContextUrl);
        return false;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response,
                           Object handler,ModelAndView model) throws Exception{
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
                            Object handler,Exception ex) throws Exception{
    }
}

3.注册拦截器(拦截所有路径,除了/login和静态资源和注册)

@SpringBootApplication
@EnableCaching
public class Application implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry){
        InterceptorRegistration ir=registry.addInterceptor(new Interceptor1());
        ir.addPathPatterns("/**");
        ir.excludePathPatterns("/login","/js/**","/html/**","/image/**","/css/**");
    }
}

4登录controller(我这里没验证,返回原来路径或者ok)

@RequestMapping("/login")
@ResponseBody
public String bbb(String name, String password, HttpSession session){
    session.setMaxInactiveInterval(1*60);  //设置过期时间以秒为单位,会自动刷新
    System.err.println(name+' '+password);
    session.setAttribute("name",name);
    session.setAttribute("password",password);
    Object ob=session.getAttribute("preurl");
    if (ob!=null) {
        return ob.toString();
    }
    return "ok";
}

5前端处理(根据data跳转到对应的路径)

$.post("/login",
       {
           name:$("#a").val(),
           password:$("#b").val()
       },
       function(data){
           if (data!='ok') {
               window.location.href = 'http://' + location.host + data;
           }
           else window.location.href = 'http://' + location.host + '/main';
       }
)

6.要使用默认登录页必须引入thymeleaf。index.html放在templates下。templates下的不能直接访问,要通过Controller。static下的可以直接访问,templates下的文件默认src地址为/static。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在使用 Spring Boot 构建应用程序时,可以使用以下步骤实现登录功能: 1. 创建一个 Spring Boot 项目,并在 pom.xml 文件中添加所需的依赖。 2. 在 application.properties 文件中配置数据库连接信息,以便您可以将用户信息存储到数据库中。 3. 创建一个用户实体类,用于存储用户信息。 4. 创建一个用户服务接口和实现类,提供注册、登录和查询用户信息的方法。 5. 创建一个用户控制器类,处理来自客户端的注册和登录请求。 6. 创建注册和登录页面,使用 HTML 和表单来收集用户信息。 7. 使用 Spring Security 进行身份验证和授权。 8. 在登录成功后,可以将用户信息存储到会话中,并使用重定向将用户重定向到某个页面。 这只是一个大致的流程,具体实现还需要根据您的需求进行调整。希望这能帮到您! ### 回答2: 使用Spring Boot编写登录功能需要以下步骤: 1. 创建一个Spring Boot项目:可以使用Spring Initializr来快速生成基本项目结构。 2. 添加依赖:在pom.xml文件中添加所需的依赖,如Spring Web、Spring Security和Thymeleaf等。 3. 创建登录页面:使用Thymeleaf模板引擎创建一个登录页面,包括用户名和密码的输入框和登录按钮。 4. 创建用户实体:创建一个User实体类,包含用户名和密码属性,并进行相应的数据库映射。 5. 创建用户接口:创建一个UserRepository接口,继承Spring Data JPA提供的CrudRepository接口,用于对用户实体进行持久化操作。 6. 创建用户服务:创建一个UserService类,用于处理用户相关的业务逻辑,包括验证用户信息和生成登录凭证等。 7. 创建登录控制器:创建一个LoginController类,用于处理登录请求和返回登录结果。在登录请求成功后,可以使用Spring Security生成一个包含用户权限信息的Token,用于后续权限控制。 8. 配置Spring Security:在应用程序的配置类中,使用@EnableWebSecurity注解启用Spring Security,并配置基本的登录和权限控制规则。 9. 测试登录功能:启动应用程序,在浏览器中输入登录页面的URL进行登录测试。验证登录功能是否正常工作,包括验证用户名和密码的正确性,并确保登录后能正确跳转到指定页面。 10. 集成持久化和安全:根据实际需求,可以根据业务需求选择合适的持久化方式,如MySQL、MongoDB或Redis等,并根据实际业务需求配置更复杂的权限控制规则。 以上是使用Spring Boot编写一个基本的登录功能的步骤,根据实际需求和业务场景,还可以进行更多的功能扩展和安全设置。 ### 回答3: 使用Spring Boot编写一个登录功能可以按照以下步骤进行实现: 1. 创建一个Spring Boot项目:可以使用Spring Initializer来快速创建一个基本的项目结构,并添加必需的依赖项,如Spring Web和Spring Security。 2. 配置数据库:登录功能通常需要将用户信息存储在数据库中。可以选择使用关系型数据库如MySQL或非关系型数据库如MongoDB。在application.properties或application.yml文件中配置数据库连接。 3. 创建用户实体类:创建一个User实体类,包含必要的属性如用户名、密码和角色等。 4. 创建用户存储库:创建一个UserRepository接口继承自JpaRepository,用于实现对用户信息的增删改查操作。 5. 创建登录页面:创建一个登录页面,包含用户名和密码的输入框以及登录按钮。可以使用HTML和Thymeleaf模板引擎来实现页面。 6. 创建登录控制器:创建一个LoginController类,用于处理用户的登录请求。可以使用@PostMapping注解来定义处理登录请求的方法,并在方法内部验证用户名和密码是否正确。 7. 创建用户验证服务:创建一个UserDetailsService接口的实现类,用于根据用户名加载用户信息。可以使用UserRepository查询数据库来获取用户信息,并将其封装为Spring Security所需的UserDetails对象。 8. 配置Spring Security:创建一个SecurityConfig类,并在其中配置Spring Security的相关设置。可以使用@EnableWebSecurity注解来启用Web安全性,并使用@Configuration注解将该类标记为配置类。在configure方法中,可以配置登录页面、允许访问的URL路径和拦截URL路径等。 9. 运行项目:使用Spring Boot的内置Tomcat容器来运行项目,并访问登录页面进行登录。 通过上述步骤,我们就可以实现一个简单的登录功能。当用户输入正确的用户名和密码后,将被认证通过,并可以跳转到其他页面或执行相应的业务逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值