我无法获得登录/注销功能以使用我的网络应用程序.... 我使用的是apache shiro 1.2,我的accpilcation被命名为SSP
这是我的配置:
编辑:更新代码
来自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>
来自shiro.ini的一些代码:(编辑:更改了网址过滤顺序)
[main]
shiro.loginUrl = /login.jsp
# this is my own AuthenticationFilter which works fine
authc = com.mycompany.ssp.AuthFilter
authc.failureKeyAttribute=shiroLoginFailure
# redirect after successful login
authc.successUrl = portal.jsp
######################################
# NOT ACTIVE CODE ####################
# login URL
#authc.loginUrl = /login.jsp
# redirect after logout
#logout.redirectUrl = /login.jsp
######################################
[urls]
# enable logout filter
/logout = logout
# enable authc filter for all application pages
/** = authc
来自portal.jsp的一些代码
<a href="/SSP/logout"> Log out V2 </a></br>
我有1个问题和1个我不理解的问题:
问题
当我通过https://localhost:8443/SSP/访问我的网络应用程序时 我得到一个会话ID,尽管用户还没有登录:
https://localhost:8443/SSP/login.jsp;JSESSIONID=6560e585-d871-4839-a606-464b4b314457
登录按预期工作,重定向到portal.jsp工作
在这里,我只是希望在没有创建会话的情况下被重定向到https://localhost:8443/SSP/login.jsp !!
修改
我的会话管理现在看起来像这样(shiro.ini
# SESSION MANAGEMENT #
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
# Use the configured native session manager:
securityManager.sessionManager = $sessionManager
# 3,600,000 milliseconds = 1 hour
securityManager.sessionManager.globalSessionTimeout = 3600000
########################################################################
# CACHE MANAGEMENT #
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $cacheManager
问题 - &gt; 已解决问题Markus K
通过链接注销&#34;注销V2&#34;使用LogoutFilter(在shiro.ini中配置)工作正常但我不明白我如何重定向回/SSP/login.jsp虽然shiro.ini中的行logout.redirectUrl = /login.jsp
不活动?
我最好的猜测是shiro.loginUrl = /login.jsp
行告诉shiro&#34;他们退出后再次来到这里&#34;,但我不确定。
任何人都可以帮我吗?
答案 0 :(得分:1)
我也是shiro的新手。但也许我可以帮你解决一些问题。
能够通过shiro.ini
中配置的LogoutFilter注销用户
在shiro.ini中,您配置为使用authc
过滤器用于所有传入请求/**
:
/** = authc
/logout = logout
这意味着对/logout
等网址的请求将通过authc
过滤器传递,而不是按预期通过logout
过滤器传递。更改过滤器顺序可以解决问题。
/logout = logout
/** = authc
见http://shiro.apache.org/web.html#Web-URLPathExpressions。 关于web.xml中的logout servlet映射。我不确定你想在那里实现什么。我想你可以删除它并使用如上所述的shiro注销过滤器。
访问wep应用页面时显示用户login.jsp
登录用户
限制所有网址并提供login.jsp应该解决它。正如我所说,我也是shiro的新手。因此,我没有给出可能错误的解释,而是给出了一个适合我所描述的要求的配置。
[main]
shiro.loginUrl = /login.jsp
[urls]
/login.jsp = authc
/logout = logout
/specific/url = authc, roles[ADMIN]
/** = authc
查看规则的顺序。首先使用更具体的规则,然后使用更一般的规则。