0

我尝试在我的项目中使用 Apache Shiro 身份验证,但没有成功。我无法发现问题出在哪里。我只需要用户直接访问 /pages/principal/products.xhtml 页面,选择要购买的产品,然后重定向到 /purchase.xhtml 以完成购买,但在我的情况下,我尝试的所有请求都重定向到/login.xhtml 页面。有没有人有什么建议?下面的代码。谢谢!

shiro.ini    
[main]
authc.loginUrl = /login.xhtml
authc.successUrl = /index.xhtml

[users]
admin@faces.com = adminfaces, admin
user@faces.com = user, customer


[roles]
admin = *
customer = purchases

[urls]

/index.xhtml = anon
/pages/principal/products = anon
/login.xhtml = authc
/javax.faces.resource/** = anon
/logout = logout
/pages/purchase/** = authc
/protected/** = authc, roles[admin]

web.xml

...
<listener>
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener
    </listener-class>
</listener>

<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ShiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>
...
4

2 回答 2

0

我能够解决我的麻烦。我现在正在使用 redhat PicketLink 解决方案。它使用流利的 java 语言来配置安全路径,并且学习曲线较低。我认为 Apache Shiro 是一个很好的安全 API,但我有一点时间来学习它。感谢您的帮助@Brian Demers。

于 2018-09-29T23:57:23.187 回答
0

我的猜测是你需要改变这条线 /pages/principal/products = anon/pages/principal/products.xhtml = anon

您也可以使用许可过滤器

于 2018-09-24T13:49:52.060 回答