| 知乎专栏 |
Oauth @RestController 一切正常, @Controller 提示如下
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}
程序如下
package api.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class IndexController {
public IndexController() {
// TODO Auto-generated constructor stub
}
@GetMapping("/")
public String index() {
return "Helloworld!!!";
}
@GetMapping("/about")
public String test() {
return "Helloworld!!!";
}
}
分析 @Controller 不允许直接返回字符串,必须使用 @ResponseBody 或者 ModelAndView,下改后问题解决。
package api.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/web")
public class IndexController {
public IndexController() {
// TODO Auto-generated constructor stub
}
@GetMapping("/")
@ResponseBody
public String index() {
return "Helloworld!!!";
}
@GetMapping("/about")
@ResponseBody
public String test() {
return "Helloworld!!!";
}
}
同时 @EnableWebSecurity 需要忽略 @Controller 的映射 URL
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/**/json").antMatchers("/about", "/", "/css/**");
}
}