Hallo Zusammen,
Aufbau der Software:
Spring Boot, RestFull, Thymeleaf und Mysql.
Das Problem:
Ich mache den Login über das Interface WebSecurityConfigurerAdapter mit der Überschreibenden Methode configure(). hier greife ich auf die MysqlDB zu und suche den user.
Jetzt meine Frage:
Wie kann ich ein Objekt erstellen das auf der ganzen Session gültig ist und ich Zugriff haben auf die Daten. Ich habe mehre Seiten Wechsel auf andere Seiten(intern) und ich möchte die Daten nicht über HTML weiter geben da diese geändert werden können.
hier sollte das objekt erstellt werden
SecurityConfig:
hier sollte der zugriff möglich sein (Session also mehre user)
RestController:
Aufbau der Software:
Spring Boot, RestFull, Thymeleaf und Mysql.
Das Problem:
Ich mache den Login über das Interface WebSecurityConfigurerAdapter mit der Überschreibenden Methode configure(). hier greife ich auf die MysqlDB zu und suche den user.
Jetzt meine Frage:
Wie kann ich ein Objekt erstellen das auf der ganzen Session gültig ist und ich Zugriff haben auf die Daten. Ich habe mehre Seiten Wechsel auf andere Seiten(intern) und ich möchte die Daten nicht über HTML weiter geben da diese geändert werden können.
hier sollte das objekt erstellt werden
SecurityConfig:
Java:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private LoggingAccessDeniedHandler accessDeniedHandler;
@Autowired
private UserRepository userRepo;
@Override
protected void configure(HttpSecurity http) throws Exception {
//hier werden die Rechte gesetzt wer was sehen darf
//redirect zu login wird hier gesetzt
http
.authorizeRequests()
.antMatchers(
"/",
"/AppCommunication/**",
"/Profil/**",
"Urlaub/**",
"/js/**",
"/css/**",
"/image",
"/img/**",
"/webjars/**").permitAll()
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").defaultSuccessUrl("/menue")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.permitAll()
.and()
.exceptionHandling()
.accessDeniedHandler(accessDeniedHandler);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//hier werden Rollen und USER definiert
List<Mitarbeiter> mitarbeiters = userRepo.findAll();
for (Mitarbeiter mitarbeiter : mitarbeiters) {
if (mitarbeiter.getRechte() >= 1) {
auth.inMemoryAuthentication()
.withUser(mitarbeiter.getLogin()).password(mitarbeiter.getPass()).roles("USER");
} else {
auth.inMemoryAuthentication().withUser(mitarbeiter.getLogin()).password(mitarbeiter.getPass()).roles("ADMIN");
}
}
RestController:
Java:
@org.springframework.web.bind.annotation.RestController
public class RestController {
private static final Logger logger = LoggerFactory.getLogger(RestController.class);
@Autowired
private UserRepository userRepo;
@Autowired
private DienstplanRepo dp;
@Autowired
private UrlaubRepo urlaubRepo;
@Autowired
private EventRepo eventRepo;
@Autowired
private VeranstalterRepo veranstalterRepo;
@Autowired
private AnsprechpartnerRepo ansprechpartnerRepo;
@Autowired
private QualifikationenRepo qualifikationenRepo;
@Autowired
private PositionRepo positionRepo;
@Autowired
private AnfragenRepo anfragenRepo;
// TODO geht auch noch nicht
// @Autowired
// private AnsprechpartnerRepo ansprechpartnerRepo;
@RequestMapping(value = "/Veranstalter/Erstellen", method = RequestMethod.GET)
public ResponseEntity<?> veranstalterErstellen(@RequestParam("id") int id) {
List<Urlaub> dataSet = urlaubRepo.findAll();
ArrayList<Urlaub> returnList = new ArrayList<>();
for (Urlaub urlaub : dataSet) {
if (urlaub.mitarbeiter.id == id) {
returnList.add(urlaub);
}
}
ObjectMapper mapper = new ObjectMapper();
try {
return new ResponseEntity<String>(mapper.writeValueAsString(returnList), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<String>("Fail", HttpStatus.SERVICE_UNAVAILABLE);
}
}
@RequestMapping(value = "/Urlaub/Senden", method = RequestMethod.GET)
public ResponseEntity<?> UrlaubSenden(@RequestParam("id") int id, @RequestParam("von") String von,
@RequestParam("bis") String Bis) {
try {
Urlaub urlaub = new Urlaub();
return new ResponseEntity<String>("anfrage Wurde gesenet", HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<String>("Fail", HttpStatus.OK);
}
}
@RequestMapping(value = "/Urlaub/Abrufen", method = RequestMethod.GET)
public ResponseEntity<?> UrlaubAbrufen(@RequestParam("id") int id) {
List<Urlaub> dataSet = urlaubRepo.findAll();
ArrayList<Urlaub> returnList = new ArrayList<>();
for (Urlaub urlaub : dataSet) {
if (urlaub.mitarbeiter.id == id) {
returnList.add(urlaub);
}
}
ObjectMapper mapper = new ObjectMapper();
try {
return new ResponseEntity<String>(mapper.writeValueAsString(returnList), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<String>("Fail", HttpStatus.SERVICE_UNAVAILABLE);
}
}