如何使用spring security在首页显示登录页面?

时间:2016-09-16 05:15:41

标签: java hibernate spring-mvc spring-security

我需要在主页之前显示登录页面。如果用户名和密码对用户正确,那么我需要移动到主页。但是在这个程序中首先显示主页,当我输入' / 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";
    }
}

1 个答案:

答案 0 :(得分:2)

我怀疑您正在访问网址/下的主页。要登录的要求仅适用于/home

.antMatchers("/home").access("hasRole('User')")