Spring boot 我想先查看登录页面,即使任何用户想要访问任何其他页面,也需要在SpringSecurity中重定向到登录页面
这是示例控制器。我的问题基本上是当我输入基本url时,它会重定向到内部页面,而不是登录页面。我想要什么。我应该怎么做才能做到这一点 这是示例控制器。我的问题基本上是当我输入基本url时,它会重定向到内部页面,而不是登录页面。我想要什么。我应该怎么做才能做到这一点。Spring boot 我想先查看登录页面,即使任何用户想要访问任何其他页面,也需要在SpringSecurity中重定向到登录页面,spring-boot,spring-security,Spring Boot,Spring Security,这是示例控制器。我的问题基本上是当我输入基本url时,它会重定向到内部页面,而不是登录页面。我想要什么。我应该怎么做才能做到这一点 这是示例控制器。我的问题基本上是当我输入基本url时,它会重定向到内部页面,而不是登录页面。我想要什么。我应该怎么做才能做到这一点。 package com.sushovan.security.controller; import javax.validation.groups.ConvertGroup; import org.springframework.s
package com.sushovan.security.controller;
import javax.validation.groups.ConvertGroup;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "home.jsp";
}
@RequestMapping("/login")
public String loginPage() {
return "login.jsp";
}
@RequestMapping("/logout-success")
public String logoutPage() {
return "logout.jsp";
}
}
这是示例安全配置类。大部分配置都在这里完成
Spring安全过滤器算法是这样工作的; 网络资源是否受到保护? 用户是否经过身份验证? 用户是否已授权 所以,若它并没有经过身份验证,它会将请求重定向到登录页面,这就是您想要的 因此,您应该更新配置方法
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.usernameParameter("userName").passwordParameter("password")
.permitAll()
.and()
.logout().invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/logout-success").permitAll();
}
你能试试这个并告诉我它是否有效吗?它有效。首先出现我的登录页面。但是我还需要做一件事,如果任何用户想要访问insider页面而不访问login,那么用户应该重定向到login页面。使用此配置,您可能无法在没有身份验证的情况下查看任何页面。当你第一次运行你的程序时,你能在没有身份验证的情况下访问任何页面吗?现在出现一个日志,说明userRepository无法注册。为什么会显示?如果我想公开我的一些页面,那么我需要做什么?如果你想公开页面,你需要添加这样的异常;antMatches(“/pageUrlYouWantToExpose”).permitAll()。。。您可以在这里使用通配符,例如,如果您匹配(“/name*”),它将应用于所有以“name”开头的url。如果您使用google Spring安全过滤器配置,您可以找到更多关于此的信息
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.usernameParameter("userName").passwordParameter("password")
.permitAll()
.and()
.logout().invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/logout-success").permitAll();
}