2017-08-04 73 views
0

我新的春天启动,并希望在春季安全模块添加到我以前的项目。我跟着这个link。我的Spring Boot版本是1.5.6.RELEASEjavax.servlet.ServletException:圆形视觉路径[登录]

这里是安全配置

@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/", "/home").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .inMemoryAuthentication() 
      .withUser("user").password("password").roles("USER"); 
    } 
} 

这里是MVC配置:

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/home").setViewName("home"); 
     registry.addViewController("/").setViewName("home"); 
     registry.addViewController("/hello").setViewName("hello"); 
     registry.addViewController("/login").setViewName("login"); 
    } 

我可以保证home.htmlhello.htmllogin.html位于resources/templates/。当我添加了Spring Security的一部分,以前的项目,我也有处理JPA要求

@Controller 
@RequestMapping("/test/pgsql") 
public class TestPostgreSQLController { 

    @Autowired 
    private CustomerRepository customerRepository; 

    @RequestMapping("/save") 
    public @ResponseBody 
    String process() { 
     customerRepository.save(new Customer("Neo", "Chan")); 
     customerRepository.save(new Customer("Luke", "Liu")); 
     customerRepository.save(new Customer("Ran", "Guo")); 
     customerRepository.save(new Customer("Joey", "Chen")); 
     customerRepository.save(new Customer("Larry", "Huang")); 
     return "Done"; 
    } 

    @RequestMapping("/findbyid") 
    public @ResponseBody String findById(@RequestParam("id") long id) { 
     String result = ""; 
     result = customerRepository.findOne(id).toString(); 
     return result; 
    } 

    @RequestMapping("/find") 
    public @ResponseBody String find(@RequestParam("lastname") String lastName) { 
     String results = ""; 
     for (Customer bauer : customerRepository.findCustomersByLastName(lastName)) { 
      System.out.println(bauer.toString()); 
      results = results + bauer.toString() + "<br>"; 
     } 
     return results; 
    } 


} 

pom.xml中是这样

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

我建项目作为jar包的控制器。当我访问localhost:8080/homelocalhost:8080/login地址。它会抛出以下异常:

javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 

任何建议?提前致谢。

回答

0

这之后这个问题被问很长时间,但我找到了答案在这里] 尝试添加registry.addViewController("/login").setViewName("login.html"); ,对我的工作希望它帮助1