有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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权限的登录用户