Apache Shiro登录不按预期工作(登录前创建会话)

时间:2016-02-10 11:08:28

标签: shiro

我无法获得登录/注销功能以使用我的网络应用程序.... 我使用的是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/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;,但我不确定。

    < / LI>

任何人都可以帮我吗?

1 个答案:

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

查看规则的顺序。首先使用更具体的规则,然后使用更一般的规则。