spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)

文章目录

  • 1.写在前面的话
    • 1.1 代码结构调整
    • 1.2 前面文章的不足
  • 2. 自定义登陆页面优化
    • 2.1自定义一个统一管理项目中所有由yml或properties文件传入的变量的类(上篇文章说的"大盒子"类)
    • 2.2 指定默认登陆页面
    • 2.3 获取用户配置的登陆url,当用户请求以.html结尾时,如未认证,将其转发到用户配置的url
    • 2.4 指定用户配置的登陆url不进行认证校验
    • 2.5 在配置文件里配置自己要用的登陆页面url
    • 2.6 简单实现一个页面
  • 3. 测试
    • 3.1 直接输入localhost:8080/demo.html
    • 3.2 将配置文件注释掉

项目源码地址 https://github.com/nieandsun/security

1.写在前面的话

1.1 代码结构调整

代码还是会使用面几篇文章一直延用的代码,但对代码结构进行了调整,调整后的代码结构如下:
spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第1张图片

1.2 前面文章的不足

通过前面两篇文章,已经实现了不使用spring-security的默认行为,而自定义登陆页面 , 自定义登陆成功/登陆失败的行为.
但是

  • 对于自定义的登陆页面,有些项目组可能有自己的设计风格,并不想用我们提供的登陆页面
  • 对于自定义登陆成功/登陆失败,有些项目组的需求可能就是按ping-security默认实现的方式

面对这样的特殊需求,我们的处理方式肯定是有问题的,这时候一个比较好的处理方式是按照上篇文章上篇文章所说的那样,我们给一个默认实现,如果其他项目组想用我们的项目的话,可以通过修改配置文件,来实现自己的个性化需求.

2. 自定义登陆页面优化

比较简单主要做的事情有以下几点:

2.1自定义一个统一管理项目中所有由yml或properties文件传入的变量的类(上篇文章说的"大盒子"类)

package com.nrsc.security.core.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * "大盒子"类-----------------用于统一管理项目中所有由yml或properties文件传入的变量值
 * Created By: Sun Chuan
 * Created Date: 2019/6/20 22:13
 */
@Component //将此类注入到spring容器中
@Data //不用写get set方法了
@ConfigurationProperties(prefix = "nrsc.security") //指定以nrsc.security开头的配置会射入到该类中
public class SecurityProperties {
    //封装浏览器相关的属性
    private BrowserProperties browser = new BrowserProperties();
}

2.2 指定默认登陆页面

package com.nrsc.security.core.properties;

import lombok.Data;

/**
 * Created By: Sun Chuan
 * Created Date: 2019/6/20 22:13
 */
@Data
public class BrowserProperties {
    //指定默认的登陆页面
    private String loginPage = "/nrsc-login.html";
}

2.3 获取用户配置的登陆url,当用户请求以.html结尾时,如未认证,将其转发到用户配置的url

spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第2张图片

2.4 指定用户配置的登陆url不进行认证校验

spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第3张图片

2.5 在配置文件里配置自己要用的登陆页面url

比如:

nrsc:
  security:
    browser:
      loginPage: /OtherServer/other-login.html

2.6 简单实现一个页面

当然由于我的项目没有进行拆分,所以这里就在本项目的一个文件夹下创建了一个超简单的页面,页面结构和代码如下:
spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第4张图片

3. 测试

3.1 直接输入localhost:8080/demo.html

spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第5张图片

3.2 将配置文件注释掉

spring-security入门5---自定义登陆页面优化---提供默认实现,但可通过修改配置进行个性化实现(一)_第6张图片

你可能感兴趣的:(spring-security,spring-security)