我需要在主页之前显示登录页面。如果用户名和密码对用户正确,那么我需要移动到主页。但是在这个程序中首先显示主页,当我输入' / login'然后只显示登录页面。 如何首先显示登录页面,在用户认证后,需要显示主页?
这是我在安全配置类中的代码。我已经跳过了其他部分,只是从这里开始处理程序。
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/home").access("hasRole('User')")
.and()
.formLogin().loginPage("/login").defaultSuccessUrl("/home")
.usernameParameter("username").passwordParameter("password")
.and()
.csrf()
.and()
.exceptionHandling().accessDeniedPage("/accessDenied");
}
这是我的控制器类
@Controller
public class LoginController {
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginPage(ModelMap model,
@RequestParam(value = "logout", required = false) String logout,
@RequestParam(value = "error", required = false) String error) {
return "login";
}
@RequestMapping(value = {"/","/home"}, method = RequestMethod.GET)
public String homePage(ModelMap model) {
model.addAttribute("greeting", "Hi, Welcome to mysite");
return "welcome";
}
@RequestMapping(value = "/accessDenied", method = RequestMethod.GET)
public String loginPage() {
return "accessDenied";
}
}
答案 0 :(得分:2)
我怀疑您正在访问网址/
下的主页。要登录的要求仅适用于/home
:
.antMatchers("/home").access("hasRole('User')")