1. 引入Cas依賴
pom.xml檔案配置添加Cas依賴
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>1.4.0-GA</version>
</dependency>
2. CASAutoConfig配置類
CASAutoConfig配置類,配置需要忽略授權的URL:
@Configuration
public class CASAutoConfig {
@Value("${cas.server-url-prefix}")
private String serverUrlPrefix;
@Value("${cas.server-login-url}")
private String serverLoginUrl;
@Value("${cas.client-host-url}")
private String clientHostUrl;
@Bean
public FilterRegistrationBean filterAuthenticationRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new AuthenticationFilter());
registration.addUrlPatterns("/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("casServerLoginUrl", serverLoginUrl);
initParameters.put("serverName", clientHostUrl);
//忽略的url."|"分隔多個url
//initParameters.put("ignorePattern", "/logout/success|/index");
initParameters.put("ignorePattern", "/logout/success");
registration.setInitParameters(initParameters);
// 設定加載的順序
registration.setOrder(1);
return registration;
}
}
3. CASController類
@Controller
public class CASController {
//方法一
//注意:如果RequestMapping的請求路徑和傳回的視圖名一緻,會報錯(Spring boot 報錯:Circular view path [...]: would dispatch back to the current handler)
//@RequestMapping("/index")
//public String index(ModelMap map) {
// map.addAttribute("name", "clien B");
// return "index";
//}
//方法二
@RequestMapping("/index")
public String index(ModelMap map) {
map.addAttribute("name", "clien B");
return "index.html";
}
@RequestMapping("/hello")
public String hello() {
return "hello.html";
}
}
注意事項
- 方法一(CASController中)
當你沒有聲明ViewResolver時,spring會給你注冊一個預設的ViewResolver,其是JstlView的執行個體。它通過RequestDispatcher尋找資源(視圖),不過這個資源也可能是Servlet,也就是說,Controller中方法傳回字元串(視圖名),也可能會解析成Servlet。當你的請求路徑與視圖名相同時,就會發生死循環。
- 方法二可正常運作