文章目录
项目源码地址 https://github.com/nieandsun/security
1.写在前面的话
1.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
2.4 指定用户配置的登陆url不进行认证校验
2.5 在配置文件里配置自己要用的登陆页面url
比如:
nrsc:
security:
browser:
loginPage: /OtherServer/other-login.html
2.6 简单实现一个页面
当然由于我的项目没有进行拆分,所以这里就在本项目的一个文件夹下创建了一个超简单的页面,页面结构和代码如下: