SpringBoot简介以及整合JSP与MyBatis、SpringSecurity的自定义认证及登录页

SpringBoot简介

SpringBoot是用来简化Spring应用的创建、运行、调试、部署等开发过程的一个全新框架,使用SpringBoot可以使用户专注于Spinrg应用的开发,而无需过多关注xml的配置(约定优于配置),简单来说,使用SpringBoot可以快速创建一个基于Spring的项目

SpringBoot的特点:

  1. 自动配置
  2. 内嵌servlet容器
  3. 起步依赖

SpringBoot整合JSP

  1. 导入依赖
    在pom.xml中添加tomcat-embed-jasper的依赖
<dependency>
	<groupId>org.apache.tomcat.embedgroupId>
	<artifactId>tomcat-embed-jasperartfactId>
dependency>

注:可以通过pom.xml中parent标签快速获取依赖

  1. 创建web目录
    添加依赖之后,可以发现无法直接在resources目录及其子目录下创建jsp文件,此时可以在main目录下创建一个web目录,然后选择file-project structure-modules中的本项目中添加一个Web,之后在左侧的Web Resource Directory中添加刚才创建的web目录,之后会发现web目录上会多一个小蓝点,那就表示成功了,然后在该目录下创建jsp即可。

SpringBoot整合MyBatis

  1. 导入依赖
    在创建SpringBoot项目时直接添加MyBatis与MySQL的依赖
    SpringBoot简介以及整合JSP与MyBatis、SpringSecurity的自定义认证及登录页_第1张图片
  2. 配置相关属性
    修改application.properties文件
#配置mysql连接要素
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc.mysql://127.0.0.1/mydb
spring.datasource.username=mysql
spring.datasource.password=mysql

#配置实体类别名
mybatis.type-aliases-package=cn.khue.pojo

#配置日志级别
loggin.level.cn.khue.mapper=debug

SpringSecurity

SpringSecurity是一个为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,提供一组可以在Spring应用上下文中配置的Bean,充分利用了IOC、DI、AOP功能,为应用程序提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。底层通过各种拦截器、过滤器来实现控制权限的访问。
Spring Security是Spring采用AOP思想,基于Servlet过滤器实现的安全框架,它提供了完善的认证机制和方法级的授权功能,是一款非常优秀的权限管理框架。

应用安全性的两个方面:

  1. 用户认证(Authentication):验证某个用户是否为系统中的合法主体(用户名、密码等凭证)
    通过用户名和密码成功登录系统后,让系统得到当前用户的角色身份
  2. 用户授权(Authorization):验证某个用户是否有权限执行某个操作
    系统根据当前用户的角色,给其授予对应可以操作的权限资源

SpringSecurity默认拦截全部请求,直接跳转至内置登录界面(默认用户名为user,密码将打印在控制台)

自定义认证逻辑

  1. 编写配置类
    @Configuration
    public class SecurityConfig{
    	@Bean
    	public PasswordEncoder getPasswordEncoder(){
    		return new BCryptPasswordEncoder();
    	}
    }
    
  2. 编写认证服务实现类
    @Service
    public class CustomAuthentication implements UserDetailsService{
    	@Autowired
    	private PasswordEncoder passwordEncoder;
    
    	@Override
    	public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException(){
    		if(!username.equals("用户名")){
    			//如果该用户名不存在,就抛出异常
    			throw new UsernameNotFoundException();
    		}
    		//如果用户名存在,验证密码
    		return new User(username,passwordEncoder.encode("真实密码"),AuthorityUitls.commaSeparatedStringToAuthorityList("用户权限1”,“用户权限2"));
    	}
    }
    

自定义登录页面

  1. 编写登录页面
  2. 修改配置类
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter{
    	@Bean
    	public PasswordEncoder getPasswordEncoder(){
    		return new BCryptPasswordEncoder();
    	}
    
    	//自定义拦截
    	@Override
    	protected void configure(HttpSecurity hppt){
    		//url拦截
    		http.authorizeRequests()
    		.antMatchers("/login.html").permitAll()		//登录页资源放行
    		.anyRequest().authenticated();				//其他所有请求资源必须认证
    		
    		//表单登录
    		http.formLogin()
    		.loginPage("/login.html")		//自定义登录页
    		.loginProcessingUrl("/login")	//自定义登录页中的登录请求
    		.successForwardUrl("/main")		//登录成功后跳转的请求地址
    		.failureForwardUrl("/error");	//登录失败后跳转的请求地址
    
    		//关闭csrf防护
    		http.csrf().disable();
    	}
    }	
    
  3. 编写控制器
    @Controller
    public class LoginController{
    	//登录成功
    	@PostMapping("/main")
    	public String toMain(){
    		return "redirect:/main.html";
    	}
    	
    	//登录失败
    	@PostMapping("/error")
    	public String error(){
    		return "redirect:/error.html";
    	}
    }
    

你可能感兴趣的:(SpringBoot简介以及整合JSP与MyBatis、SpringSecurity的自定义认证及登录页)