shiro是如何根据URL前缀以不同方式验证的

时间:2016-08-21 12:51:57

标签: java 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.xml中配置shiro和web集成时

现在的问题是:在同一视图中,通过访问admin前缀url成功登录,跳转到主页,如http:// localhost:8080 / admin / index.do,然后进入此浏览器窗口http:// localhost:8080 / menber / index.do,因为它可以直接访问URL前缀,而不需要登录现在需求是:如果menber没有登录URL前缀必须记录,我们怎样才能实现呢?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全关注此问题,您可能需要查看此文档:http://shiro.apache.org/web.html#Web-WebINIconfiguration

您可以过滤所有'/ *',而不是两次定义过滤器映射。然后通过shiro.ini(或一个spring bean)配置访问要求 [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的登录用户。