Spring Security
Boas
Estou com um problema ao implementar o spring security
Tenho uma página de index que tem um link para login. Inicialmente só tinha página de login mas para o meu projeto preciso de uma página index.
O meu código é este
O meu controller
Quando ponho o debugger a linha que me está a dar problema é esta
Quando entro na página index está tudo ok, quando vou para o link login (entra logo naquela função) e retorna vazio, o que é normal visto que não pus as credenciais.
Alguma dica?
Estou com um problema ao implementar o spring security
Tenho uma página de index que tem um link para login. Inicialmente só tinha página de login mas para o meu projeto preciso de uma página index.
O meu código é este
@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin*/**").hasRole("ADMIN") .antMatchers("/user*/**").hasRole("USER") .antMatchers("/dba*/**").hasRole("DBA").and().formLogin().loginPage("/index").permitAll() .loginProcessingUrl("/login").usernameParameter("email").passwordParameter("password").and() .rememberMe().rememberMeParameter("remember-me").tokenRepository(tokenRepository) .tokenValiditySeconds(86400).and().csrf().and().exceptionHandling().accessDeniedPage("/Access_Denied"); }
O meu controller
@Controller @RequestMapping("/") @SessionAttributes("roles") public class IndexController { private static final Logger logger = LoggerFactory.getLogger(Atividades.class); @Autowired AtividadesService as; @Autowired UserService userService; @Autowired UserProfileService userProfileService; @Autowired MessageSource messageSource; @Autowired PersistentTokenBasedRememberMeServices persistentTokenBasedRememberMeServices; @Autowired AuthenticationTrustResolver authenticationTrustResolver; @RequestMapping(value = { "/"}, method = RequestMethod.GET) public String homePage(ModelMap model) { //Lista as atividades da semana List<Atividades> atividades = as.listAllAtividades(); model.addAttribute("atividades", atividades); return "index"; } @RequestMapping(value = { "/admin" }, method = RequestMethod.GET) public String listUsers(ModelMap model) { List<AppUser> users = userService.listAllUsers(); model.addAttribute("users", users); model.addAttribute("loggedinuser", getPrincipal()); return "/admin/admin"; } @ModelAttribute("roles") public List<UserProfile> initializeProfiles() { return userProfileService.findAll(); } @RequestMapping(value = "/Access_Denied", method = RequestMethod.GET) public String accessDeniedPage(ModelMap model) { model.addAttribute("loggedinuser", getPrincipal()); return "accessDenied"; } @RequestMapping(value = "/login", method = RequestMethod.GET) public String loginPage() { if (isCurrentAuthenticationAnonymous()) { return "login"; } else { return "redirect:/admin"; } } @RequestMapping(value="/logout", method = RequestMethod.GET) public String logoutPage (HttpServletRequest request, HttpServletResponse response){ Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null){ //new SecurityContextLogoutHandler().logout(request, response, auth); persistentTokenBasedRememberMeServices.logout(request, response, auth); SecurityContextHolder.getContext().setAuthentication(null); } return "redirect:/login?logout"; } private String getPrincipal(){ String userName = null; Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails) { userName = ((UserDetails)principal).getUsername(); } else { userName = principal.toString(); } return userName; } private boolean isCurrentAuthenticationAnonymous() { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); return authenticationTrustResolver.isAnonymous(authentication); } }
Quando ponho o debugger a linha que me está a dar problema é esta
@RequestMapping(value = "/login", method = RequestMethod.GET) public String loginPage() { if (isCurrentAuthenticationAnonymous()) { return "login"; } else { return "redirect:/admin"; } }
Quando entro na página index está tudo ok, quando vou para o link login (entra logo naquela função) e retorna vazio, o que é normal visto que não pus as credenciais.
Alguma dica?
Gil
Curtidas 0