Spring security ---登陆成功后返回登陆前界面<页面重定向>
问题:在登陆/退出成功后,我们往往通过http.formLogin().successForwardUrl()
和http.logout().logoutSuccessUrl()
设定操作成功后的回跳页面。我们现在希望在任意界面跳转到登陆界面后,一旦登录成功便会返回登陆前的界面。
解决方法:我们自定义一个过滤器,在Spring security将当前页面(假设为P)重定向到登录页面之前,先将当前页面P的url存入对应的Bean中,在登陆完成后,再通过controller直接重定向到原页面P。
一、自定义全局参数
@Configuration
public class ParameterConfiguration {
@Bean(name = "urlPath")
public urlPathBean urlPath(){
return new urlPathBean("test"); //urlPath作为全局参数
}
}
@AllArgsConstructor //这里使用lombok添加构造方法和set,get方法
@NoArgsConstructor
@Data
public class urlPathBean {
public String urlPath;
}
二、自定义filter
因为Filter初始化在注入Bean之前,所以我们不能使用@AutoWired这种方式进行注入。
这里我们需要一个自定义的SpringUtils类负责从Spring容器中取得Bean;
/**
* @author yqb
* @date 2018年9月29日
* @version 1.0
*/
@Component
public class SpringUtils implements ApplicationContextAware