【发布时间】:2021-03-03 02:37:27
【问题描述】:
这是我第一次在这里问,我很关心这个,所以我使用Spring Securirty和Spring boot开发了一个Web应用程序,代码似乎很好并且应用程序运行,我只配置了登录,会话和注册页面,当我转到根 url localhost:8080/ 时,索引模板正确加载,但是当我转到其他 url 例如 /login 或 /register 时,我的模板不会显示,如果我更改主 url 的模板( localhost:8080/) 并返回除 index 以外的它一直返回 index,总而言之,Web 仅加载模板文件夹下名为 index.html 的文件。 这是我的文件结构: hirearchy
控制器类
@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);
}
}
【问题讨论】:
-
您实际上不需要编辑标题来添加“(已解决)”。这里的很多问题已经解决了,我们可以通过问题答案计数上的深绿色看到。
标签: java spring spring-boot spring-security thymeleaf