spring Boot 安全应该默认重定向到请求的url。根据https://stackoverflow.com/questions/36243352/how-to-set-redirection-after-successful-login:
默认情况下,Spring Security将在登录后重定向到您试图访问的安全资源
在服务器运行并输入localhost:3000/categories
后,它正确地将我路由到/login
,但在成功登录后,它将我路由到http://localhost:8080/js/demo/chart-pie-demo.js?continue
,当然不是/categories
。
- SecurityConfig.java*:
...
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(req -> req
// 1. enable project static assets
.requestMatchers("/css/*").permitAll()
.requestMatchers("/img/*").permitAll()
.requestMatchers("/js/*").permitAll()
.requestMatchers("/scss/*").permitAll()
.requestMatchers("/vendor/*").permitAll()
// 2. admin
.requestMatchers("/admin/*").hasRole("ADMIN")
// 3. enable for all
.requestMatchers("/register").permitAll()
.requestMatchers("/register-new").permitAll()
.requestMatchers("/forgot-password").permitAll()
// 4. else require authentication
.anyRequest().authenticated()
).formLogin(form -> form
.loginPage("/login")
.loginProcessingUrl("/do-login")
.permitAll()
).logout(logout -> logout
.invalidateHttpSession(true)
.clearAuthentication(true)
.permitAll()
);
return http.build();
}
...
字符串
- LoginController.java*:
@Controller
public class LoginController {
@Autowired
private AdminService adminService;
@GetMapping("/login")
public String loginForm() {
return "login";
}
@GetMapping("/register")
public String register(Model model) {
model.addAttribute("adminDto", new AdminDto());
return "register";
}
@GetMapping("/forgot-password")
public String forgotPassword(Model model) {
return "forgot-password";
}
@PostMapping("/register-new")
public String addNewAdmin(
@Valid @ModelAttribute("adminDto") AdminDto adminDto,
BindingResult result,
Model model,
RedirectAttributes redirectAttributes) {
// dto is not changed anywhere so could be just passed as is
model.addAttribute("adminDto", adminDto);
try {
// 1. errors in validation
if (result.hasErrors()) {
System.out.println("there were errors");
return "/register";
}
// 2. user is already registered
if (adminService.findByUsername(adminDto.getUsername()) != null) {
redirectAttributes.addFlashAttribute("message", "You are already registered");
return "redirect:/register";
}
// 3. password and repeatPassword do not equal
if (!adminDto.getPassword().equals(adminDto.getRepeatPassword())) {
redirectAttributes.addFlashAttribute("message", "Passwords are not same");
return "redirect:/register";
}
// 4. success
adminService.save(adminDto);
redirectAttributes.addFlashAttribute("message", "Registered successfully");
} catch (Exception e) {
// 5. all other errors
redirectAttributes.addFlashAttribute("message", "Unknown server error");
return "redirect:/register";
}
return "redirect:/register";
}
}
型
- 登录.html*:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<div th:replace="~{fragments/header::header}"></div>
<body class="bg-gradient-primary">
<div class="container">
<!-- Outer Row -->
<div class="row justify-content-center">
<div class="col-xl-10 col-lg-12 col-md-9">
<div class="card o-hidden border-0 shadow-lg my-5">
<div class="card-body p-0">
<!-- Nested Row within Card Body -->
<div class="row">
<div class="col-lg-6 d-none d-lg-block bg-login-image"></div>
<div class="col-lg-6">
<div class="p-5">
<div class="text-center">
<h1 class="h4 text-gray-900 mb-4">Welcome Back!</h1>
</div>
<div th:if="${param.error}" class="alert alert-danger text-center">
Invalid username or password
</div>
<div th:if="${param.logout}" class="alert alert-info text-center">
You have been logged out
</div>
<form th:action="@{/do-login}" method="post" class="user">
<div class="form-group">
<input type="email" name="username" class="form-control form-control-user" id="exampleInputEmail"
aria-describedby="emailHelp" placeholder="Enter Email Address...">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control form-control-user"
id="exampleInputPassword" placeholder="Password">
</div>
<button class="btn btn-primary btn-user btn-block">
Login
</button>
</form>
<hr>
<div class="text-center">
<a class="small" th:href="@{/forgot-password}">Forgot Password?</a>
</div>
<div class="text-center">
<a class="small" th:href="@{/register}">Create an Account!</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div th:replace="~{fragments/scripts::scripts}"></div>
</body>
</html>
型
- $tree src/main/resources/templates*:
src/main/resources/templates/
├── categories.html
├── forgot-password.html
├── fragments
│ ├── footer.html
│ ├── header.html
│ ├── scripts.html
│ ├── sidebar.html
│ └── topbar.html
├── index.html
├── login.html
└── register.html
型
编辑:前端或模板来自sb-admin-2
EDIT 2:spring-boot安全调试日志:
2023-11-16T14:50:29.214+01:00 INFO 3766 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-11-16T14:50:29.226+01:00 INFO 3766 --- [ main] c.e.ecommerce.EcommerceApplication : Started EcommerceApplication in 6.398 seconds (process running for 6.825)
2023-11-16T14:50:39.372+01:00 INFO 3766 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-11-16T14:50:39.373+01:00 INFO 3766 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-11-16T14:50:39.375+01:00 INFO 3766 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms
2023-11-16T14:50:39.392+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Securing GET /categories
2023-11-16T14:50:39.429+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.449+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/categories?continue to session
2023-11-16T14:50:39.450+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:39.462+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:39.463+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:39.898+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.962+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy : Securing GET /vendor/fontawesome-free/css/all.min.css
2023-11-16T14:50:39.964+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Securing GET /css/sb-admin-2.min.css
2023-11-16T14:50:39.965+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.security.web.FilterChainProxy : Securing GET /vendor/jquery/jquery.min.js
2023-11-16T14:50:39.969+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy : Securing GET /js/sb-admin-2.min.js
2023-11-16T14:50:39.969+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.security.web.FilterChainProxy : Securing GET /vendor/jquery-easing/jquery.easing.min.js
2023-11-16T14:50:39.971+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.security.web.FilterChainProxy : Securing GET /vendor/bootstrap/js/bootstrap.bundle.min.js
2023-11-16T14:50:39.973+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy : Secured GET /js/sb-admin-2.min.js
2023-11-16T14:50:39.975+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Secured GET /css/sb-admin-2.min.css
2023-11-16T14:50:39.979+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.981+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.982+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.984+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/jquery-easing/jquery.easing.min.js?continue to session
2023-11-16T14:50:39.984+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:39.985+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/jquery/jquery.min.js?continue to session
2023-11-16T14:50:39.985+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:39.986+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:39.986+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/fontawesome-free/css/all.min.css?continue to session
2023-11-16T14:50:39.987+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:39.988+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/bootstrap/js/bootstrap.bundle.min.js?continue to session
2023-11-16T14:50:39.990+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:39.990+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.security.web.FilterChainProxy : Securing GET /vendor/chart.js/Chart.min.js
2023-11-16T14:50:39.991+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy : Securing GET /js/demo/chart-area-demo.js
2023-11-16T14:50:39.997+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.security.web.FilterChainProxy : Securing GET /js/demo/chart-pie-demo.js
2023-11-16T14:50:40.000+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.002+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.002+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/chart.js/Chart.min.js?continue to session
2023-11-16T14:50:40.002+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.003+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.004+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/js/demo/chart-area-demo.js?continue to session
2023-11-16T14:50:40.004+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.006+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.008+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.009+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/js/demo/chart-pie-demo.js?continue to session
2023-11-16T14:50:40.010+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.069+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.070+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.070+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.070+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.072+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.072+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.073+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.074+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.075+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.076+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.078+01:00 DEBUG 3766 --- [nio-8080-exec-8] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.077+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.076+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.079+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.080+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.081+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.083+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.083+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.083+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.087+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.087+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.109+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy : Securing GET /vendor/jquery-easing/jquery.easing.min.js
2023-11-16T14:50:40.113+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.114+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/jquery-easing/jquery.easing.min.js?continue to session
2023-11-16T14:50:40.115+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.173+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.174+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.180+01:00 DEBUG 3766 --- [nio-8080-exec-7] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.184+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.security.web.FilterChainProxy : Securing GET /vendor/chart.js/Chart.min.js
2023-11-16T14:50:40.188+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.189+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/vendor/chart.js/Chart.min.js?continue to session
2023-11-16T14:50:40.189+01:00 DEBUG 3766 --- [nio-8080-exec-9] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.197+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.197+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.203+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.208+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.security.web.FilterChainProxy : Securing GET /js/demo/chart-area-demo.js
2023-11-16T14:50:40.212+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.213+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/js/demo/chart-area-demo.js?continue to session
2023-11-16T14:50:40.214+01:00 DEBUG 3766 --- [nio-8080-exec-2] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.218+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.219+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.223+01:00 DEBUG 3766 --- [nio-8080-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.227+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.security.web.FilterChainProxy : Securing GET /js/demo/chart-pie-demo.js
2023-11-16T14:50:40.230+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.231+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.w.s.HttpSessionRequestCache : Saved request http://localhost:8080/js/demo/chart-pie-demo.js?continue to session
2023-11-16T14:50:40.231+01:00 DEBUG 3766 --- [nio-8080-exec-6] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.237+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.238+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.242+01:00 DEBUG 3766 --- [nio-8080-exec-5] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.247+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.security.web.FilterChainProxy : Securing GET /favicon.ico
2023-11-16T14:50:40.249+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:50:40.250+01:00 DEBUG 3766 --- [io-8080-exec-10] o.s.s.web.DefaultRedirectStrategy : Redirecting to http://localhost:8080/login
2023-11-16T14:50:40.257+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy : Securing GET /login
2023-11-16T14:50:40.258+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy : Secured GET /login
2023-11-16T14:50:40.261+01:00 DEBUG 3766 --- [nio-8080-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to anonymous SecurityContext
2023-11-16T14:52:10.158+01:00 DEBUG 3766 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy : Securing POST /do-login
型
编辑3:有人可能认为这是回答已经在这里Java Spring App redirect wrong URL on Tomcat+Apache2,但有解决方案是:
假设它是一个spring Boot 应用程序,那么您应该在spring应用程序中定义两个操作路径
但是我已经定义了我重定向的所有路径,也就是说-对于每个return "redirect:/register";
,
@GetMapping("/register")
public String register(Model model) {
model.addAttribute("adminDto", new AdminDto());
return "register";
}
型
所以这对我来说显然不是一个解决方案
1条答案
按热度按时间guykilcj1#
您可以使用身份验证。下面是一个自定义MySimpleUrlAuthenticationAuthentication类的简单示例,它实现了AuthenticationAuthentication和AuthenticationFailureAuthentication接口。此示例使用Spring Security来处理身份验证成功和失败:
字符串
onAuthenticationSuccess方法处理成功的身份验证。onAuthenticationFailure方法处理身份验证失败。
在SecurityFilterChain中使用它:
型