2017-02-18 24 views
0

Как обновить атрибуты сеанса весной MVC? Я попробовал этот код:Как обновить атрибут сеанса в Spring MVC

@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"; 
} 

} 

Мой тест:

-open главная страница

-автоматически перенаправлять на страницу с паролем форме

-Enter пароль

-автоматически перенаправлять на главную страницу, все хорошее, открытие страницы

-refresh страница

-Снова спрос пароль

+0

Это не то, что '@ SessionAttribute' предназначен для. Просто используйте атрибуты сеанса, как обычно для этого. –

ответ

0

Update ваш метод 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"; 
} 
+0

О, это работает. Большое спасибо. – LeshaFloy