Shiro 是一個(gè)高性能的 Java 安全框架,擁有很多功能,如認(rèn)證、授權(quán)、會(huì)話管理等。但有時(shí)候我們?cè)谑褂?Shiro 時(shí)會(huì)遇到一些問(wèn)題,例如放行靜態(tài)資源文件,如 CSS、JS、圖片等。本文將介紹如何通過(guò)配置 Shiro 來(lái)放行 CSS。
在 Shiro 中,我們可以通過(guò)配置 shiro.ini 文件來(lái)指定 URL 的訪問(wèn)規(guī)則。在該文件中的 [urls] 部分,將 URL 與相應(yīng)的權(quán)限進(jìn)行映射。如果 URL 不需要權(quán)限,可以使用“anon”表示。例如: [urls] /login = anon /logout = logout /** = authc 其中,“/**”表示所有的 URL 都需要進(jìn)行認(rèn)證操作(authc)。但是這樣的話,靜態(tài)資源文件也會(huì)被攔截,導(dǎo)致頁(yè)面樣式丟失。因此,我們需要對(duì) CSS 進(jìn)行放行。
通過(guò)在 [urls] 部分添加 CSS 相關(guān)的配置,即可實(shí)現(xiàn)放行。例如:
[urls] /login = anon /logout = logout /css/** = anon /** = authc
在上述配置中,“/css/**”表示所有的 CSS 文件都不需要進(jìn)行認(rèn)證操作,即可以直接訪問(wèn)。
當(dāng)然,也可以使用代碼的方式來(lái)進(jìn)行放行 CSS。例如:
@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/css/**").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .defaultSuccessUrl("/") .permitAll() .and() .logout() .logoutSuccessUrl("/") .permitAll(); }
上述代碼中,使用了 Spring Security 的配置方式,其中,“/css/**”表示所有的 CSS 文件都不需要進(jìn)行身份驗(yàn)證。
通過(guò)以上的方式,即可實(shí)現(xiàn)放行 CSS,讓頁(yè)面展示更加美觀。