【问题标题】:redirect the user to a default ‘after logout’ page on shiro将用户重定向到 shiro 上的默认“注销后”页面
【发布时间】:2014-10-31 18:06:48
【问题描述】:

我正在尝试在用户离开网站 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]

【问题讨论】:

  • 您能否更准确地说出问题所在。什么不工作?注销现在在做什么?
  • 注销工作正常。但我正在寻找的是以下内容:当用户远离计算机时,我希望 shiro 自动将他注销,这就是它所做的,但是当发生这种情况时,它不会再次将他重定向到登录页面,而是会在他点击某个链接之前,他会一直停留在同一页面中。我想强制重定向到登录页面
  • 这听起来更像是使用某种 javascript/push 框架所做的事情。当用户在后端注销时,不会向浏览器发送任何内容,因此它无法知道它需要重定向 - 直到用户点击某些东西 -。所以这更像是前端/推送/javascript 问题,而不是 shiro 问题。
  • 我喜欢你的建议,谢谢,尽管我仍然感到困惑的是,在我提到的博客中,他们说新版本的 shiro 支持这项任务。感谢您的帮助
  • 把它作为一个答案很好,所以这个问题可以关闭

标签: java security jakarta-ee shiro


【解决方案1】:

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

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

【讨论】:

  • 这不是我希望的答案,但感谢您的时间和帮助:)
【解决方案2】:

确保您的注销 url 与您的注销定义 /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>

webapp文件夹下的login.jspsuccess.jsp,以及success.jsp

登出链接为:&lt;a href="logout"&gt;Logout&lt;/a&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2012-02-20
    • 2014-01-04
    • 2018-10-15
    • 2014-07-23
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多