天天看點

SpringBoot搭建Cas用戶端

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";
    }
}
           

注意事項

  1. 方法一(CASController中)
當你沒有聲明ViewResolver時,spring會給你注冊一個預設的ViewResolver,其是JstlView的執行個體。它通過RequestDispatcher尋找資源(視圖),不過這個資源也可能是Servlet,也就是說,Controller中方法傳回字元串(視圖名),也可能會解析成Servlet。當你的請求路徑與視圖名相同時,就會發生死循環。
  1. 方法二可正常運作

繼續閱讀