【问题标题】:How update session attribute in Spring MVC如何在 Spring MVC 中更新会话属性
【发布时间】:2017-07-08 01:22:06
【问题描述】:

如何在 Spring MVC 中更新 Session 属性?我试过这段代码:

@Controller
@RequestMapping("/panel")
@SessionAttributes({"access"})
public class AdminController extends ErrorsController {

private final static String SECURE_ADMIN_PASS = "123123";

@ModelAttribute("access")
public Boolean getAccess() {
    return false;
}

@RequestMapping(value = {"/", ""}, method = RequestMethod.GET)
public String adminGeneralPage(@ModelAttribute("access") boolean access) {
    if (!access) return "adminPages/enterPassword";
    return "adminPages/home";
}

@RequestMapping(value = "/password", method = RequestMethod.POST)
public String enterPassword(@ModelAttribute("access") boolean access,
                            @RequestParam("password") String password, HttpServletRequest request) {
    if (password.equals(SECURE_ADMIN_PASS)) {
        request.getSession().setAttribute("access", true);
        return "adminPages/home";
    }
    return "adminPages/enterPassword";
}

}

我的测试用例:

-打开主页

-自动重定向到带有密码表单的页面

-输入密码

-自动重定向到主页,一切正常,页面打开

-刷新页面

-再次要求密码

【问题讨论】:

  • 这不是@SessionAttribute 的用途。只需像往常一样使用会话属性即可。

标签: spring session model-view-controller


【解决方案1】:

像这样更新您的 enterPassword() 方法:

@RequestMapping(value = "/password", method = RequestMethod.POST)
public String enterPassword(HttpServletRequest request, Model model, @ModelAttribute("access") boolean access,
                            @RequestParam("password") String password) {
    if (password.equals(SECURE_ADMIN_PASS)) {
        model.addAttribute("access", true);
        return "adminPages/home";
    }
    return "adminPages/enterPassword";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2014-04-18
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多