映射错误百里香叶弹簧启动安全应用程序,不加载模板



这是我第一次问这里,我很担心这一点,所以我使用Spring Security和Spring boot开发了一个web应用程序,代码似乎很好,应用程序运行,我只配置了登录、会话和注册页面,当我转到根url localhost:8080/时,索引模板加载正确,但当我转到其他url(例如/login或/register(时,我的模板不会显示,而且如果我更改主url(localhost:8080(的模板并返回除索引之外的其他内容,它会不断返回索引,总之,web只加载templates文件夹下名为index.html的文件。这是我的文件结构:雇佣

控制器类

@Controller
public class UserController {

@Autowired
private UserService userService;
@Autowired
private SecurityService securityService;
@Autowired
private UserValidator userValidator;

@GetMapping("/register")
public String registration(Model model) {
model.addAttribute("userForm", new User());
return "register";
}

@PostMapping("/register")
public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult) {
userValidator.validate(userForm, bindingResult);
if (bindingResult.hasErrors()) {
return "register";
}
userService.save(userForm);
securityService.autoLogin(userForm.getEmail(), userForm.getPass());
return "redirect:/main";
}

@GetMapping("/login")
public String login(Model model, String error, String logout) {
if (error != null)
model.addAttribute("error", "Your username and password is invalid.");
if (logout != null)
model.addAttribute("message", "You have been logged out successfully.");
return "login";
}

@GetMapping({"/"})
public String welcome(Model model) {
return "index";
}

@GetMapping({"/main"})
public String main(Model model) {
return "main";
}
}

网络安全配置

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{

@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public UserDetailsService userDetailsService() {
return super.userDetailsService();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/",
"/register",
"/js/**",
"/css/**",
"/img/**",
"/webjars/**",
"/h2/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Bean
public AuthenticationManager customAuthenticationManager() throws Exception {
return authenticationManager();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
}

应用程序类

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

所以我设法弄清楚了这一点,这是包租用和资源加载失败,spring应用程序加载它类下的所有和每个包,我的应用程序包(以及其中的应用程序类(不是根包,也在控制器包之下。这就是它必须遵循的结构:

  • 根包
    • SpringApp.java
    • WebConfig.java
    • 控制器包
      • MainController.java

相关内容

最新更新