如何在登录页面中显示闪存消息



我正在使用Grails 3.2.7以及弹簧 - 安全核:3.1.1,我想在注销时从控制器上设置一条消息,然后我需要在我的登录屏幕(auth.gsp)

中显示此消息

请参阅我写的以下代码。

在控制器中

if(condition 1){ 
flash.message = "logged out successfully and your claim id is 12345"; redirect(uri:"/logout"); 
}else if(condition b){ 
flash.message = "logged out"; redirect(uri:"/logout"); 
}else if(condition c){ 
flash.message = "multiple login is not allowed"; redirect(uri:"/logout"); 
}

在auth.gsp

<g:if test='${flash.message}'>
<div class="login_message">${flash.message}</div>
</g:if>

我看不到此消息。有人知道如何显示此消息吗?

如果注销时未将其重定向到验证页面,则不会看到闪存消息。

找出您将哪个页面重定向到此代码。

<g:if test='${flash.message}'>
<div class="login_message">${flash.message}</div>
</g:if>

如果您真的想在验证页面上查看此消息,请确保将您直接重定向到Auth Page。

您是否考虑过使用会议?

http://docs.grails.org/3.1.1/ref/servlet api/session.html

与Flash消息不同,它们存在直到重置它们为止。第一次请求后,闪存消息是重置的。

@abilash的答案

在您的控制器中

    @RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login(@RequestParam(value = "error", required = false) String error,
        @RequestParam(value = "logout", required = false) String logout,
        @RequestParam(value = "expired", required = false) String expired,
        HttpServletRequest request) {
    ModelAndView model = new ModelAndView();
    if (error != null) {
        model.addObject("error", getErrorMessage(request, "SPRING_SECURITY_LAST_EXCEPTION"));
    }
    if (logout != null) {
        model.addObject("msg", "You've been logged out successfully.");
    }
    if (expired != null) {
        model.addObject("msg", "Session Timeout..!");
    }
    model.setViewName("login");
    return model;
}

和您的视图

<div class="error" style="color: red;" align="center">${error}</div>

在您的春季安全配置

错误

.and().formLogin().loginPage("/login").failureUrl("/login?error")

for logount

.and().logout().logoutSuccessUrl("/login?logout").invalidateHttpSession(true) 

最新更新