java如何根据URL前缀以不同的方式验证shiro
<Filter>
<Filter-name> shiroFilter </ filter-name>
<Filter-class> org.springframework.web.filter.DelegatingFilterProxy </ filter-class>
<Init-param>
<Param-name> targetFilterLifecycle </ param-name>
<Param-value> true </ param-value>
</ Init-param>
</ Filter>
<Filter-mapping>
<Filter-name> shiroFilter </ filter-name>
<Url-pattern> / admin / * </ url-pattern>
</ Filter-mapping>
<Filter>
<Filter-name> menberShiroFilter </ filter-name>
<Filter-class> org.springframework.web.filter.DelegatingFilterProxy </ filter-class>
<Init-param>
<Param-name> targetFilterLifecycle </ param-name>
<Param-value> true </ param-value>
</ Init-param>
</ Filter>
<Filter-mapping>
<Filter-name> menberShiroFilter </ filter-name>
<Url-pattern> / menber / * </ url-pattern>
</ Filter-mapping>
在web中配置shiro和web集成时。xml
现在的问题是:当在同一视图中,通过访问以管理员为前缀的url成功登录时,跳转到主页,例如http://localhost:8080/admin/index。然后进入这个浏览器窗口http://localhost:8080/menber/index。做的时候,menber因为可以直接访问URL前缀,而现在不需要登录的需求是:如果menber没有登录,URL前缀必须被登录,我们该如何实现呢
# 1 楼答案
我不确定我是否完全理解了这个问题,你可能想看看这个文件:http://shiro.apache.org/web.html#Web-WebINIconfiguration
您可以过滤所有“/*”项,而不是两次定义过滤器映射。然后通过shiro配置访问要求。ini(或春豆)
[urls] /index.html = anon /user/create = anon /user/** = authc /admin/** = authc, roles[administrator] /remoting/rpc/** = authc, perms["remote:invoke"]
这是从一个现有的示例中得到的,在本例中,
index.html
和/user/create
对匿名用户可用,/user/**
只需要一个登录用户/admin/**
需要具有administrator
权限的登录用户。最后/remoting/rpc/**
需要有remote:invoke
权限的登录用户