书签 分享 收藏 举报 版权申诉 / 98
上传文档赚钱

类型第7章-SpringBoot安全管理45课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2878517
  • 上传时间:2022-06-07
  • 格式:PPT
  • 页数:98
  • 大小:3.31MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第7章-SpringBoot安全管理45课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    SpringBoot 安全管理 45 课件
    资源描述:

    1、第7章 Spring Boot 安全管理Spring Security介绍及入门MVC Security安全配置介绍自定义用户认证及授权管理Security管理前端页面 学习目标了解Spring Boot的默认安全管理12 掌握自定义用户认证的实现 掌握自定义用户授权管理的实现34掌握Security实现页面控制的实现了 解掌 握掌 握掌 握 目录Spring Security快速入门7.27.27.17.1Spring Security介绍7.37.3MVC Security安全配置介绍自定义用户认证7.47.4点击查看本案例相关知识点点击查看本案例相关知识点7.57.5自定义用户授权管理点

    2、击查看本案例相关知识点7.67.6Security管理前端页面 7.2 Spring Security快速入门 知识架构12基础环境搭建开启安全管理效果测试 7.4自定义用户认证自定义用户认证 知识架构123内存身份认证JDBC身份认证UserDetailsService 身份认证 7.5自定义用户授权管理自定义用户授权管理 知识架构123自定义用户访问控制自定义用户登录自定义用户退出456登录用户信息获取记住我功能CSRF防护功能 本章将针对Spring Boot的安全管理进行详细地讲解。章节概要实际开发中,一些应用通常要考虑到安全性问题。例如,对于一些重要的操作,有些请求需要用户验明身份后

    3、才可以执行,还有一些请求需要用户具有特定权限才可以执行。这样做的意义,不仅可以用来保护项目安全,还可以控制项目访问效果。 7.1 Spring Security介绍什么是Spring Security?认识Spring Security Spring Security是基于Spring生态圈的,用于提供安全访问控制解决方案的框架。Spring Security的安全管理有两个重要概念,分别是Authentication(认证)和Authorization(授权)。认识Spring Security 7.1 Spring Security介绍Spring Security介绍 认识Spring

    4、Security 7.1 Spring Security介绍MVC Security是Spring Boot整合Spring MVC框架搭建的Web应用的安全管理。WebFlux Security是Spring Boot整合Spring WebFlux框架搭建的Web应用的安全管理。OAuth2是大型项目的安全管理框架,可以实现第三方认证、单点登录等功能。Actuator Security用于对项目的一些运行环境提供安全监控,例如Health健康信息、Info运行信息等,它主要作为系统指标供运维人员查看管理系统的运行情况。Spring Boot整合Spring Security实现的安全管理功

    5、能: 基础环境搭建 7.2 Spring Security入门1. 创建Spring Boot项目2. 引入页面Html资源文件3. 编写Web控制层搭建步骤: 基础环境搭建 7.2 Spring Security入门 创建项目,引入Web和Thymeleaf的依赖启动器 基础环境搭建 7.2 Spring Security入门在项目的在项目的resourcesresources下下templatestemplates目录中,引入案例所需的资源文件目录中,引入案例所需的资源文件,项目结构如下,项目结构如下 引入页面Html资源文件普通用户可访问的页面VIP用户可访问的页面项目首页面 基础环境搭

    6、建 7.2 Spring Security入门Controllerpublic class FilmeController / 影片详情页 GetMapping(/detail/type/path) public String toDetail(PathVariable(type)String type, PathVariable(path)String path) return detail/+type+/+path; 至此,使用Spring Boot整合Spring MVC框架实现了一个传统且简单的Web项目,目前项目没有引入任何的安全管理依赖,也没有进行任何安全配置,项目启动成功后,可以

    7、访问首页,单击影片进入详情详情页。 编写Web控制层 开启安全管理效果测试 7.2 Spring Security入门1. 添加spring-boot-starter-security启动器2. 项目启动测试搭建步骤: 开启安全管理效果测试 7.2 Spring Security入门org.springframework.bootspring-boot-starter-security 添加spring-boot-starter-security启动器一旦项目引入一旦项目引入spring-boot-starter-securityspring-boot-starter-security启动器,

    8、启动器,MVC SecurityMVC Security和和WebFluxWebFlux SecuritySecurity负责的安全功能都会立即生效负责的安全功能都会立即生效 开启安全管理效果测试 7.2 Spring Security入门 项目启动测试项目启动时会在控制台项目启动时会在控制台ConsoleConsole中自动生成一个安全密码中自动生成一个安全密码 开启安全管理效果测试 7.2 Spring Security入门浏览器访问浏览器访问http:/localhost:8080/http:/localhost:8080/查看项目首页查看项目首页项目中并没有手动创建用户登项目中并没有手

    9、动创建用户登录页面,而添加了录页面,而添加了SecuritySecurity依赖后,依赖后,Spring SecuritySpring Security会自带一个默认的登录页面会自带一个默认的登录页面 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门登录页面随意输入一个错误的用户名和密码,会出现错误提示登录页面随意输入一个错误的用户名和密码,会出现错误提示 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门SecuritySecurity会默认提供一个可登录的用户信息,其中用户名为会默认提供一个可登录的用户信息,其中用户名为userus

    10、er,密码随机生成,密码随机生成,这个密码会随着项目的每次启动随机生成并打印在控制台上,这个密码会随着项目的每次启动随机生成并打印在控制台上,在登录页面输入在登录页面输入用户名和密码用户名和密码 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门这种默认安全管理方式存在诸多问题,例如:只有唯一的默认登录用户user、密码随机生成且过于暴露、登录页面及错误提示页面不是我们想要的等。默认安全管理方式存在的问题 MVC Security安全配置介绍 7.3 MVC Security安全配置项目引入项目引入spring-boot-starter-securityspring

    11、-boot-starter-security依赖启动器,依赖启动器,MVC SecurityMVC Security安全管理功安全管理功能就会自动生效,其默认的安全配置是在能就会自动生效,其默认的安全配置是在SecurityAutoConfigurationSecurityAutoConfiguration和和UserDetailsServiceAutoConfigurationUserDetailsServiceAutoConfiguration中实现的。中实现的。 导入并自动化配置启动Web安全管理SecurityAutoConfiguration 用于配置用户身份信息UserDetail

    12、sServiceAutoConfigurationMVC Security安全配置简介 MVC Security安全配置介绍 7.3 MVC Security安全配置1. 要完全关闭Security提供的Web应用默认安全配置,可以自定义WebSecurityConfigurerAdapter类型的Bean组件以及自定义UserDetailsService、AuthenticationProvider或AuthenticationManager类型的Bean组件。2. 另外,可以通过自定义WebSecurityConfigurerAdapter类型的Bean组件来覆盖默认访问规则。如何关闭Se

    13、rcurity提供的Web应用默认安全配置 MVC Security安全配置介绍 7.3 MVC Security安全配置方法描述configure(AuthenticationManagerBuilder auth)定制用户认证管理器来实现用户认证configure(HttpSecurity http)定制基于HTTP请求的用户访问控制WebSecurityConfigurerAdapter类的主要方法及说明如何关闭Sercurity提供的Web应用默认安全配置 内存身份认证 7.4 自定义用户认证1. 自定义WebSecurityConfigurerAdapter配置类2. 使用内存进行身

    14、份认证3. 效果测试搭建步骤: 内存身份认证 7.4 自定义用户认证EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter 注:EnableWebSecurity注解是一个组合注解,主要包括Configuration注解、Import(WebSecurityConfiguration.class, SpringWebMvcImportSelector.class)注解和EnableGlobalAuthentication注解 自定义WebSecurityConfigurerAdapte

    15、r配置类 内存身份认证 7.4 自定义用户认证 使用内存进行身份认证SecurityConfigSecurityConfig类中重写类中重写configure(configure(AuthenticationManagerBuilderAuthenticationManagerBuilder authauth) )方法方法,并在该方法中使用内存身份认证的方式自定义了认证用户信息。定义用户认证信息并在该方法中使用内存身份认证的方式自定义了认证用户信息。定义用户认证信息时,设置了两个用户名和密码以及对应的角色信息。时,设置了两个用户名和密码以及对应的角色信息。(具体代码见备注)(具体代码见备注)

    16、内存身份认证 7.4 自定义用户认证重启项目进行效果测试,项目启动成功后,仔细查看控制台打印信息,发现没有默重启项目进行效果测试,项目启动成功后,仔细查看控制台打印信息,发现没有默认安全管理时随机生成的密码了。通过浏览器访问认安全管理时随机生成的密码了。通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 内存身份认证 7.4 自定义用户认证输入错误的用户名和密码,会出现相应的提示输入错误的用户名和密码,会出现相应的提示 效果测试 内存身份认证 7.4 自定义用户认证输入正确的用户名和密码,会进入网站首页输入正确的用户名和密码,会进入网站

    17、首页单击电影名称同样可以查看影片详情 效果测试 JDBC身份认证 7.4 自定义用户认证1. 数据准备2. 添加JDBC连接数据库的依赖启动器3. 进行数据库连接配置4. 使用JDBC进行身份认证5. 效果测试搭建步骤: JDBC身份认证 7.4 自定义用户认证t_customer 用户表t_authority 用户权限表t_customer_authority 用户权限关联表 数据准备数据库 springbootdata JDBC身份认证 7.4 自定义用户认证org.springframework.bootspring-boot-starter-jdbcmysqlmysql-connect

    18、or-javaruntime 添加JDBC连接数据库的依赖启动器 JDBC身份认证 7.4 自定义用户认证spring.datasource.url=jdbc:mysql:/localhost:3306/springbootdata?serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=root 进行数据库连接配置 JDBC身份认证 7.4 自定义用户认证在在SecurityConfigSecurityConfig 类中的类中的configure(configure(AuthenticationM

    19、anagerBuilderAuthenticationManagerBuilder authauth) )方方法中使用法中使用JDBCJDBC身份认证的方式进行自定义用户认证身份认证的方式进行自定义用户认证, ,使用使用JDBCJDBC身份认证时,首先身份认证时,首先需要对密码进行编码设置(必须与数据库中用户密码加密方式一致);然后需要需要对密码进行编码设置(必须与数据库中用户密码加密方式一致);然后需要加载加载JDBCJDBC进行认证连接的数据源进行认证连接的数据源DataSourceDataSource;最后,执行;最后,执行SQLSQL语句,实现通过用语句,实现通过用户名户名userna

    20、meusername查询用户信息和用户权限查询用户信息和用户权限。( (具体代码见备注具体代码见备注) ) 使用JDBC进行身份验证 JDBC身份认证 7.4 自定义用户认证重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 7.4 自定义用户认证输入错误的用户名和密码,会出现相应的提示输入错误的用户名和密码,会出现相应的提示JDBC身份认证 效果测试 7.4 自定义用户认证输入正确的用户名和密码,会进入网站首页输入正确的用户名和密码,会进入网站首

    21、页单击电影名称同样可以查看影片详情JDBC身份认证 效果测试 UserDetailsService 身份认证 7.4 自定义用户认证1. 定义查询用户及角色信息的服务接口2. 定义UserDetailsService用于封装认证用户信息3. 使用UserDetailsService进行身份认证4. 效果测试搭建步骤: UserDetailsService 身份认证 7.4 自定义用户认证public Customer getCustomer(String username) Customer customer=null; Object o = redisTemplate.opsForValue

    22、().get(customer_+username); if(o!=null) customer=(Customer)o; else customer = customerRepository.findByUsername(username); if(customer!=null) redisTemplate.opsForValue().set(customer_+username,customer); return customer;CustomerServiceCustomerService业务处理类,用来通过用户名获取用户及权限信息业务处理类,用来通过用户名获取用户及权限信息,参考代码如

    23、下,参考代码如下 定义查询用户及角色信息的服务接口 UserDetailsService 身份认证 7.4 自定义用户认证public List getCustomerAuthority(String username) List authorities=null; Object o = redisTemplate.opsForValue().get(authorities_+username); if(o!=null) authorities=(List)o; else authorities=authorityRepository.findAuthoritiesByUsername(use

    24、rname); if(authorities.size()0) redisTemplate.opsForValue().set(authorities_+username,authorities); return authorities; 定义查询用户及角色信息的服务接口 UserDetailsService 身份认证 7.4 自定义用户认证UserDetailsService是Security提供的进行认证用户信息封装的接口,该接口提供的loadUserByUsername(String s)方法用于通过用户名加载用户信息。使用UserDetailsService进行身份认证的时,自定义一个

    25、UserDetailsService接口的实现类,通过loadUserByUsername(String s)方法调用用户业务处理类中已有的方法进行用户详情封装,返回一个UserDetails封装类,来供Security认证使用。 定义UserDetailsService用于封装认证用户信息 UserDetailsService 身份认证 7.4 自定义用户认证自定义一个接口实现类自定义一个接口实现类UserDetailsServiceImplUserDetailsServiceImpl进行用户认证信息进行用户认证信息UserDetailsServiceUserDetailsService封装

    26、封装,重写了重写了UserDetailsServiceUserDetailsService接口的接口的loadUserByUsernameloadUserByUsername(String s)(String s)方法,在该方法中,使用方法,在该方法中,使用CustomerServiceCustomerService业务业务处理类获取用户的用户信息和权限信息,并通过处理类获取用户的用户信息和权限信息,并通过UserDetailsUserDetails进行认证用户信息进行认证用户信息封装封装。( (具体代码见备注具体代码见备注) ) 定义UserDetailsService用于封装认证用户信息

    27、UserDetailsService 身份认证 7.4 自定义用户认证EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter Autowired private UserDetailsServiceImpl userDetailsService; Override protected void configure(AuthenticationManagerBuilder auth) throws Exception BCryptPasswordEncoder encoder = new

    28、 BCryptPasswordEncoder(); auth.userDetailsService(userDetailsService).passwordEncoder(encoder); 使用UserDetailsService进行身份认证 7.4 自定义用户认证重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/UserDetailsService 身份认证输入正确或者错误的用户信息,其效果输入正确或者错误的用户信息,其效果同上同上 效果测试 自定义用户

    29、访问控制 7.5 自定义用户授权管理1. 自定义用户访问控制2. 效果测试搭建步骤: 自定义用户访问控制 7.5 自定义用户授权管理Overrideprotected void configure(HttpSecurity http) throws Exception http.authorizeRequests().antMatchers(/).permitAll().antMatchers(/detail/common/*).hasRole(common).antMatchers(/detail/vip/*).hasRole(vip).anyRequest().authenticated(

    30、).and().formLogin();自定义配置类自定义配置类SecurityConfigSecurityConfig,继续重写,继续重写configure(configure(HttpSecurityHttpSecurity http) http)方法方法 自定义用户访问控制 自定义用户访问控制 7.5 自定义用户授权管理重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 自定义用户访问控制 7.5 自定义用户授权管理项目首页单击普通电影或者项

    31、目首页单击普通电影或者VIPVIP专享电影名称查询电影详情专享电影名称查询电影详情 效果测试 自定义用户访问控制 7.5 自定义用户授权管理在此登录界面输入正确的用户名和密码信息后在此登录界面输入正确的用户名和密码信息后(如果访问的是普通电影如果访问的是普通电影)单击返回项目首页 效果测试 自定义用户访问控制 7.5 自定义用户授权管理在项目首页中在项目首页中单击单击VIPVIP专享电影名称查看影片详情专享电影名称查看影片详情,登录普通用户,在查看登录普通用户,在查看VIPVIP电电影详情时,页面会出现影详情时,页面会出现403 Forbidden403 Forbidden的错误信息的错误信息

    32、 效果测试 自定义用户登录 7.5 自定义用户授权管理1. 自定义用户登录页面2. 自定义用户登录跳转3. 自定义用户登录控制4. 效果测试搭建步骤: 自定义用户登录 7.5 自定义用户授权管理在项目的在项目的resources/ templatesresources/ templates目录下新创建目录下新创建login.htmllogin.html,核心代码如下,核心代码如下 用户登录界面用户登录界面 自定义用户登录页面 自定义用户登录 7.5 自定义用户授权管理 用户登录界面用户登录界面 自定义用户登录页面 自定义用户登录 7.5 自定义用户授权管理通过通过标签定义了一个用户登录功能,且

    33、登录数据以标签定义了一个用户登录功能,且登录数据以POSTPOST方式向方式向“/ /userLoginuserLogin”路径进行提交。其中,登录表单中的用户名参数和密码参数可路径进行提交。其中,登录表单中的用户名参数和密码参数可以自行定义;登录数据提交方式必须为以自行定义;登录数据提交方式必须为postpost,提交的路径也可以自行定义。,提交的路径也可以自行定义。( (具体代码见备注具体代码见备注) ) 自定义用户登录页面 自定义用户登录 7.5 自定义用户授权管理login.htmllogin.html页面中页面中引入静态资源文件到项目引入静态资源文件到项目resourcesresou

    34、rces下的下的staticstatic目录中。结目录中。结构如图构如图 自定义用户登录页面 自定义用户登录 7.5 自定义用户授权管理在之前创建的在之前创建的FilmeControllerFilmeController类中添加一个跳转到登录页面类中添加一个跳转到登录页面login.htmllogin.html的方法的方法GetMapping(/userLogin)public String toLoginPage() return login/login;注:Spring Security默认使用Get方式的“/login”请求用于向登录页面跳转,默认使用Post方式的“/login”请求用

    35、于对登录后的数据进行处理。因此,自定义用户登录控制时,需要提供向用户登录页面跳转的方法,且自定义的登录页跳转路径必须与数据处理提交路径一致。 自定义用户登录跳转 自定义用户登录 7.5 自定义用户授权管理打开打开SecurityConfigSecurityConfig类,重写类,重写configure(configure(HttpSecurityHttpSecurity http) http)方法实现用户登录控制方法实现用户登录控制Overrideprotected void configure(HttpSecurity http) throws Exception http.authoriz

    36、eRequests().antMatchers(/).permitAll().antMatchers(/login/*).permitAll().antMatchers(/detail/common/*).hasRole(common).antMatchers(/detail/vip/*).hasRole(vip).anyRequest().authenticated(); 自定义用户登录控制 自定义用户登录 7.5 自定义用户授权管理http.formLogin().loginPage(/userLogin).permitAll().usernameParameter(name).passw

    37、ordParameter(pwd).defaultSuccessUrl(/).failureUrl(/userLogin?error); 自定义用户登录控制在在configure(configure(HttpSecurityHttpSecurity http) http)方法方法中添加以下内容中添加以下内容实现用户登录控制实现用户登录控制 7.5 自定义用户授权管理重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/会直接进入到项目首页会直接进入到项目首页,

    38、,在项目首页,单击普通电影或者在项目首页,单击普通电影或者VIPVIP专享电影名称查询电影详情专享电影名称查询电影详情自定义用户登录 效果测试 7.5 自定义用户授权管理输入错误的账号信息输入错误的账号信息自定义用户登录使用正确的账户进行登录,并可查看影片详情页面,可自行查看 效果测试 自定义用户退出 7.5 自定义用户授权管理整合步骤:1. 添加自定义用户退出链接2. 自定义用户退出控制3. 效果测试 自定义用户退出 7.5 自定义用户授权管理注:Spring Boot项目中引入Spring Security框架后会自动开启CSRF防护功能(跨站请求伪造防护,此处作为了解即可,后续小节将详细

    39、说明),用户退出时必须使用POST请求;如果关闭了CSRF防护功能,那么可以使用任意方式的HTTP请求进行用户注销。 在index.html添加自定义用户退出链接 自定义用户退出 7.5 自定义用户授权管理http.logout().logoutUrl(/mylogout).logoutSuccessUrl(/);在在SecurityConfigSecurityConfig类,重写类,重写configure(configure(HttpSecurityHttpSecurity http) http)方法进行用户退出方法进行用户退出控制控制,在该方法中添加如下代码,在该方法中添加如下代码 自定义

    40、用户退出控制 自定义用户退出 7.5 自定义用户授权管理重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 自定义用户退出 7.5 自定义用户授权管理先访问影片详情自动跳转到自定义的用户登录页面先访问影片详情自动跳转到自定义的用户登录页面login.htmllogin.html,在登录界面输,在登录界面输入正确的用户名和密码后入正确的用户名和密码后,如下:,如下:单击 效果测试 自定义用户退出 7.5 自定义用户授权管理单击影片详情中的单击影片详情

    41、中的“返回返回”链接回到项目首页(此时用户仍处于登录状态),链接回到项目首页(此时用户仍处于登录状态),单击首页中的单击首页中的“注销页注销页”链接进行用户注销链接进行用户注销注销后,如果再次访问影片详情则又会被拦截到用户登录页面 效果测试 登录用户信息获取 7.5 自定义用户授权管理整合步骤:1. 使用HttpSession获取用户信息及测试2. 使用SecurityContextHolder获取用户信息 登录用户信息获取 7.5 自定义用户授权管理在在FilmeControllerFilmeController类中新增一个用于获取当前会话用户信息的类中新增一个用于获取当前会话用户信息的ge

    42、tUsergetUser()()方方法法,在在该该方法方法中通过获取当前中通过获取当前HttpSessionHttpSession的相关方法遍历并获取了会话中的的相关方法遍历并获取了会话中的用户信息用户信息。在在获取认证用户信息时,使用了获取认证用户信息时,使用了AuthenticationAuthentication的的getPrincipalgetPrincipal()()方法,默方法,默认返回的也是一个认返回的也是一个ObjectObject对象,其本质是封装用户信息的对象,其本质是封装用户信息的UserDetailsUserDetails封装类封装类,其中包括有用户名、密码、权限、是否

    43、过期等,其中包括有用户名、密码、权限、是否过期等。(具体代码见备注)(具体代码见备注) 使用HttpSession获取用户信息 登录用户信息获取 7.5 自定义用户授权管理以以DebugDebug模式重启项目,浏览器访问模式重启项目,浏览器访问http:/localhost:8080/http:/localhost:8080/随意查看一个影片详情随意查看一个影片详情进行用户登录。登录成功后,在保证当前浏览器未关闭的情况下,使用同一浏览器进行用户登录。登录成功后,在保证当前浏览器未关闭的情况下,使用同一浏览器执行执行http:/localhost:8080/getuserBySessionhtt

    44、p:/localhost:8080/getuserBySession来获取用户详情来获取用户详情。 使用HttpSession获取用户信息 登录用户信息获取 7.5 自定义用户授权管理在在FilmeControllerFilmeController控制类中新增一个获取当前会话用户信息的控制类中新增一个获取当前会话用户信息的getUser2()getUser2()方法方法GetMapping(/getuserByContext)ResponseBodypublic void getUser2() SecurityContext context = SecurityContextHolder.ge

    45、tContext();System.out.println(userDetails: +context);Authentication authentication = context.getAuthentication();UserDetails principal = (UserDetails)authentication.getPrincipal();System.out.println(principal);System.out.println(username: +principal.getUsername(); 使用SecurityContextHolder获取用户信息 记住我功能

    46、 7.5 自定义用户授权管理整合步骤:1. 基于简单加密Token的方式2. 基于简单加密Token的方式效果测试3. 基于持久化Token方式4. 基于持久化Token方式效果测试 记住我功能 7.5 自定义用户授权管理在之前创建的项目用户登录页在之前创建的项目用户登录页login.htmllogin.html中新增一个记住我功能勾选框中新增一个记住我功能勾选框 记住我记住我 基本简单加密Token的方式 记住我功能 7.5 自定义用户授权管理打开打开SecurityConfigSecurityConfig类,重写类,重写configure(configure(HttpSecurityHtt

    47、pSecurity http) http)方法进行记住我功能配置方法进行记住我功能配置http.rememberMe().rememberMeParameter(rememberme).tokenValiditySeconds(200); 基本简单加密Token的方式 7.5 自定义用户授权管理重启项目进行效果测试,通过浏览器访重启项目进行效果测试,通过浏览器访问问http:/localhost:8080/userLoginhttp:/localhost:8080/userLogin记住我功能 基于简单加密Token的方式效果测试 7.5 自定义用户授权管理在登录界面输入正确的用户名和密码信息

    48、,同时勾选记住我功能,就会默认跳在登录界面输入正确的用户名和密码信息,同时勾选记住我功能,就会默认跳转到项目首页转到项目首页index.htmlindex.html,重新打开浏览器访问项目首页,直接查看影片详情重新打开浏览器访问项目首页,直接查看影片详情记住我功能 基于简单加密Token的方式效果测试 记住我功能 7.5 自定义用户授权管理需要在数据库中创建一个存储需要在数据库中创建一个存储cookiecookie信息的持续登录用户表信息的持续登录用户表create table persistent_logins (username varchar(64) not null,series va

    49、rchar(64) primary key,token varchar(64) not null,last_used timestamp not null); 基于持久化Token方式 记住我功能 7.5 自定义用户授权管理打开打开SecurityConfigSecurityConfig类,重写类,重写configure(configure(HttpSecurityHttpSecurity http) http)方法进行记住我功能配置方法进行记住我功能配置http.rememberMe().rememberMeParameter(rememberme).tokenValiditySeconds

    50、(200).tokenRepository(tokenRepository();Beanpublic JdbcTokenRepositoryImpl tokenRepository()JdbcTokenRepositoryImpl jr=new JdbcTokenRepositoryImpl();jr.setDataSource(dataSource);return jr; 基于持久化Token方式 7.5 自定义用户授权管理记住我功能重启项目进行效果测试,通过浏览器访重启项目进行效果测试,通过浏览器访问项目首页,输入正确的账户信息,勾选问项目首页,输入正确的账户信息,勾选记住我后跳转到项目首

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第7章-SpringBoot安全管理45课件.ppt
    链接地址:https://www.163wenku.com/p-2878517.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库