【问题标题】:Grails/SpringSecurity core and customizing logout behaviourGrails/SpringSecurity 核心和自定义注销行为
【发布时间】:2016-04-06 05:42:01
【问题描述】:

我正在使用带有 SpringSecurityCore 2.0 的 grails 2.3.7 .. 我有两个为特定设备量身定制的单独登录屏幕,通过访问特定控制器触发适当的登录屏幕。为此,我自定义了 loginController ..

/**
 * Show the login page.
 */

def auth() {

    def config = SpringSecurityUtils.securityConfig

    if (springSecurityService.isLoggedIn()) {
        redirect uri: config.successHandler.defaultTargetUrl
        return
    }

    String whereFrom = session.SPRING_SECURITY_SAVED_REQUEST.requestURI
    def rdt = whereFrom.contains('RDT')

    // Redirect for RDT as required  ..

    String view = rdt ? 'rauth' : 'auth'

    String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}"

    session.rdt = rdt

    render view: view, model: [postUrl: postUrl,
                               rememberMeParameter: config.rememberMe.parameter]
}

这似乎运作良好..注销时我想再次重定向到适当的屏幕..我正在尝试使用我在登录时存储的会话属性以及我找到的(诚然旧的)链接(http://grails.1312388.n4.nabble.com/Parameter-quot-logoutSuccessUrl-quot-in-spring-security-core-td2264147.html ) 重定向回适当的页面..

 /**
 * Index action. Redirects to the Spring security logout uri.
 */

def index() {

    if (!request.post && SpringSecurityUtils.getSecurityConfig().logout.postOnly) {
        response.sendError HttpServletResponse.SC_METHOD_NOT_ALLOWED // 405
        return
    }

    // TODO put any pre-logout code here

    def rdt = session.rdt

    session.rdt = null

    // redirect uri: "/j_spring_security_logout?spring-security-redirect=$logoutUrl"

    if (rdt) {

        def link = g.createLink(controller: "RDT")
        def redirectUrl = "${SpringSecurityUtils.securityConfig.logout.filterProcessesUrl}?spring-security-redirect=${link}"

        redirectStrategy.sendRedirect request, response, redirectUrl

    } else {
        redirectStrategy.sendRedirect request, response, SpringSecurityUtils.securityConfig.logout.filterProcessesUrl // '/j_spring_security_logout'
    }

    response.flushBuffer()

}

即使添加了额外的参数,这两个选项都会将我返回到“默认”身份验证登录屏幕,而不是我的备用 rauth 屏幕。我如何才能路由回适当的屏幕??谢谢

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    最后,我手动将会话变量设置为 null,使会话无效,并且标准重定向......有效..

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 2011-10-19
      • 1970-01-01
      • 2014-03-31
      • 2022-01-09
      • 2015-08-25
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      相关资源
      最近更新 更多