funktioniert Ich Spring4 lerne von .Und jetzt lesen, ich habe ein Problem über das Frühjahr Security.When traf ich „/ home“ beantragen, erhalte ich die Login-Seite, aber wenn ich die füllen formuliere und sende es, ich kann nicht in den UserDetailsService gehen, sondern gehe direkt zum Controller und dann zurück zur Login Seite. Ich debugge es und finde, dass der spitterUserDetailsService nicht null ist, es ist autowired.So weiß ich nicht what't das Problem. Hier ist mein code.Thanks im Voraus.UserServiceDetails von Spring Security nicht
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService spitterUserDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception{
http.formLogin().loginPage("/spitter/login").permitAll()
.and().rememberMe()
.and().authorizeRequests().antMatchers("/spitter/home").hasRole("SPITTER")
.anyRequest().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(spitterUserDetailsService);
}
}
@Service
public class SpitterUserDetailsService implements UserDetailsService {
@Autowired
private SpitterRepository spitterRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
System.err.println("---------- User Details Service start -----------");
Spitter spitter = spitterRepository.findByUsername(username);
if(spitter == null){
throw new UsernameNotFoundException(username + " not found ");
}
List<SimpleGrantedAuthority> authorities = new ArrayList<SimpleGrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("ROLE_SPITTER"));
System.out.println(spitter.getUsername() + " : ROLE_SPITTER");
return new User(spitter.getUsername(), spitter.getPassword(), authorities);
}
}
@Controller
@RequestMapping("/spitter")
public class SpitterController {
@Autowired
private SpitterRepository spitterRepository;
@RequestMapping(value= "/login", method = RequestMethod.GET)
public String login(Model model){
model.addAttribute("spitter", new Spitter());
return "spitter/login";
}
@RequestMapping(value= "/loginForm", method = RequestMethod.POST)
public String login(@ModelAttribute("spitter") Spitter spitter){
System.out.println(spitter.getUsername() + " logined..");
return "redirect:home";
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistrationForm(Model model){
model.addAttribute("spitter", new Spitter());
return "spitter/registerForm";
}
@RequestMapping(value="/register", method = RequestMethod.POST)
public String register(@ModelAttribute("spitter") Spitter spitter){
spitterRepository.addSpitter(spitter);
return "spitter/registerSuccessfully";
}
@RequestMapping("/home")
public String hello(){
return "spitter/helloWorld";
}
}
Hier ist meine Github url: https://github.com/CherryYu/SpringHibernate.git –
Welche ist das, was Sie Frühjahr zu tun erzählt. Ihre Form ist Entsendung an die Steuerung direkt und mit dieser Umgehung Spring Security ... –
ich das configure in der WebSecurityConfigurerAdapter außer Kraft setzen und definieren einige rules.I weiß nicht, warum meine Form Posting an die Steuerung direkt ... Ich will nur Wenn ich "/ home" anfordere, kann ich die Rolle des Benutzers anhand von UserDetailsService überprüfen. –