将用户重定向到shiro上的默认“注销后”页面

问题描述 投票:0回答:2

当他离开网站30分钟时,我试图完成将用户重定向到登录页面的任务+(shiro认为他已被淘汰)。

根据这个页面https://stormpath.com/blog/whats-new-apache-shiro-12/

我需要在ini中使用logout.redirectUrl

我试过,但我没有成功实现这个功能 这是我的ini

[main]

jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.authenticationQuery = SELECT password from users where user_name = ?
jdbcRealm.userRolesQuery = select role_name from users_roles where user_name = (select user_name FROM users WHERE user_name = ?)

ds = org.postgresql.ds.PGSimpleDataSource
ds.serverName =localhost
ds.user = postgres
ds.password = 123456
ds.databaseName = example
jdbcRealm.dataSource= $ds


authc.loginUrl = /faces/login.xhtml
user.loginUrl = /faces/login.xhtml

logout.redirectUrl = /faces/login.xhtml

multipleroles = com.example.util.MultipleRolesAuthorizationFilter

[urls]
/faces/login.xhtml = authc
/faces/logout = logout
/faces/authorized/** = user, multipleroles["admin,guest"]
/faces/guest/** = user, multipleroles["admin,guest"]
/faces/admin/** = user, roles[admin]
java security java-ee shiro
2个回答
1
投票

这听起来更像是你用某种javascript / push框架做的事情。当用户在后端注销时,没有任何内容被发送到浏览器,因此无法知道它需要重定向 - 直到用户点击某些东西 - 。

所以这比shiro问题更像是前端/推送/ javascript问题。


0
投票

确保您的注销网址与您的注销定义/faces/logout非常匹配。

我正在使用spring集成,我的配置看起来像:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager" />

        <property name="loginUrl" value="/login.jsp" />
        <property name="filterChainDefinitions">
            <value>
                /login.jsp = anon
                /login.action = anon
                /logout = logout
                /** = authc
            </value>
        </property>
    </bean>

    <bean id="logout" class="org.apache.shiro.web.filter.authc.LogoutFilter"> 
        <property name="redirectUrl" value="/login.jsp" /> 

    </bean>

login.jsp文件夹下的success.jspwebapp,以及在success.jsp

注销链接是:<a href="logout">Logout</a>

© www.soinside.com 2019 - 2024. All rights reserved.