path.matches(".*/((.css)|(.js)|(images)|(login)|(anon)).*")什么意思
时间: 2024-05-19 19:11:31 浏览: 6
这是一个 Java 的正则表达式,用于匹配一个路径是否以特定的字符串结尾。具体来说:
- `.*` 表示匹配任意字符,任意次数。
- `/` 表示匹配路径的分隔符。
- `((.css)|(.js)|(images)|(login)|(anon))` 表示匹配括号中的任意一个子表达式,其中:
- `(.css)` 表示匹配以 `.css` 结尾的字符串。
- `(.js)` 表示匹配以 `.js` 结尾的字符串。
- `(images)` 表示匹配包含 `images` 子字符串的字符串。
- `(login)` 表示匹配包含 `login` 子字符串的字符串。
- `(anon)` 表示匹配包含 `anon` 子字符串的字符串。
- `.*` 表示匹配任意字符,任意次数。
因此,这个正则表达式可以匹配任意以 `.css`、`.js`、`images`、`login` 或 `anon` 结尾的路径。
相关问题
public ShiroFilterFactoryBean shiroFilterFactoryBean (SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); shiroFilterFactoryBean.setLoginUrl("/login.html"); shiroFilterFactoryBean.setUnauthorizedUrl("/403"); Map<String, Filter> filtersMap = new LinkedHashMap<>(); shiroFilterFactoryBean.setFilters(filtersMap); Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>(); /** * 静态文件 */ filterChainDefinitionMap.put("/css/**","anon"); filterChainDefinitionMap.put("/lib/**","anon"); filterChainDefinitionMap.put("/images/**","anon"); filterChainDefinitionMap.put("/js/**","anon"); filterChainDefinitionMap.put("/file/**","anon"); /** * 登录注册 */ filterChainDefinitionMap.put("/login.html","anon"); filterChainDefinitionMap.put("/sys/logout","anon"); filterChainDefinitionMap.put("/sys/login","anon"); filterChainDefinitionMap.put("/sys/captcha","anon"); /** * 管理后台 */ filterChainDefinitionMap.put("/**", "user"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; }
这是一个使用Shiro框架实现的权限控制的配置代码。主要作用是配置Shiro的过滤器链,指定不同URL的访问权限。其中包括了静态文件的访问权限、登录注册页面的访问权限、管理后台的访问权限等等。
具体来说,ShiroFilterFactoryBean是Shiro框架中用于配置过滤器链的工厂类,通过设置该类的属性,可以定义不同URL的访问权限。在这段代码中,我们设置了登录页面、验证码接口、退出登录接口等URL为匿名访问,即不需要登录即可访问;同时将其他所有URL的访问权限设置为需要用户登录后才能访问。
需要注意的是,这里的用户登录状态是由Shiro框架负责维护。当用户访问需要登录权限的URL时,Shiro会自动检查用户是否已登录,并根据用户的登录状态决定是否允许访问。如果用户未登录,则会被重定向到登录页面。
filterRuleMap.put("/login/**", "anon"); 配置以后,部分/login下面的资源依然会呗拦截
如果在配置文件中使用`filterRuleMap.put("/login/**", "anon")`将`/login`下的所有资源都设置为放行,但是部分资源仍然被拦截,可能是因为以下原因:
1. 部分资源并不是以`/login`开头,可能是以`/login`的子路径开头,比如`/login/user`,这些资源仍然需要进行身份验证或者权限控制。
2. 部分资源虽然以`/login`开头,但是它们所处的`Controller`类并不是`/login`类,可能是其他类中的方法,这些方法依然需要进行身份验证或者权限控制。
如果以上两种情况都不是原因,那么可能是配置文件中的其他规则对`/login`下的资源进行了拦截。此时可以检查一下配置文件中的其他规则,确保没有对`/login`下的资源进行其他的身份验证或者权限控制。
另外,需要注意的是,如果`/login`类中存在一些需要身份验证或者权限控制的方法或资源,那么它们仍然需要进行身份验证或者权限控制。因此,在设置访问规则时,需要根据实际情况进行合理的设置,确保系统的安全性。
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)