java - 当他尝试进入登录页面时,使用java spring-security重定向已经登录的用户
问题描述
Java Spring App
_spring-security
__WebSecurityConfigurerAdapter
(自定义登录页面)
用户已登录并尝试转到登录页面
如何在扩展 WebSecurityConfigurerAdapter 类和控制器时管理这个?
我查看了几个代码,包括自定义处理程序,但我似乎无法理解它。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").hasRole("ADMIN")
.antMatchers("/login*").permitAll()
.antMatchers("/admin*").denyAll()
.and()
.csrf()
.disable()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/admin")
.failureUrl("/login?error=true")
.and()
.logout().logoutSuccessUrl("/login?logout=true");
http.headers().frameOptions().disable();
}
预期:用户被重定向到特定的 url
实际:用户进入页面并拥有登录表单
我知道 XML 解决方案和文档,但我没有找到必要的信息来理解这里必须做什么。任何帮助,将不胜感激。
解决方案
https://bach.mystories.vn/2018/06/12/redirect-logged-in-users-when-accessing-login-page/
3个小时的搜索,我终于在发布问题后得到了必要的简单信息,所以我不妨自己回答:
@Controller
public class MainController {
@GetMapping("/register")
public String register(Model model,Principal principal) {
if(principal!=null){
return "redirect:/";
}
else{
UserRegistrationDTO userRegistrationDTO = new UserRegistrationDTO();
model.addAttribute(userRegistrationDTO);
return "userregistration";
}
}
}
在函数内部使用重定向将主要参数添加到控制器完成了这项工作
推荐阅读
- python-2.7 - Boto3 + Python + AWS S3:如何从存储桶中的文件夹中获取最新文件
- kotlin - 如果模型为空,则不返回模型
- spring - 移动到目标系统之前的文件数据验证
- python - 将熊猫数据框转换为熊猫系列
- mongodb - 连接嵌套字段值(如果存在)
- android - onActivityResult() 将当前片段更改为上一个
- gstreamer - 我正在尝试在 VLC 媒体播放器上使用本地网络上的 gstreamer 流式传输 mp4 文件
- google-cloud-platform - CloudSQL 2Gen External Master 无法在副本中创建用户
- python - 根据其他列 pandas 对列的值求和并保存
- wxpython - wxButton内的标签对齐