我无法在应用中添加用户, 输入代码。
//This is the SpringSecurityConfig class
@Configuration
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter{
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("*"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
@Autowired
private ITrabajadorService trabajadores;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable();
http.authorizeRequests().antMatchers("/antx/**","/bower_component/**","/build/**","/dist/**","/extra-plugins/**","/graph/**","/pages/**","/plugins/**")
.permitAll()
.antMatchers("/alacran/DirectorVentas/Pedidos"
,"/alacran/api/PedidosTienda/cambiaEstatusProductos/**")
.hasAnyRole("Gerente de ventas")
.antMatchers("/alacran/Planeacion/verPedidos","/alacran/Planeacion/crearOP"
,"/alacran/api/PedidosTiendas/todosPendientes/**"
,"/alacran/api/PedidosTiendas/obtenerProductosPorPedidoProducir/**"
//,"/alacran/api/areas/iniciales/**"
,"/alacran/api/ordenProduccion/agregarOrdenv2/**"
,"/alacran/api/ProductoTerminado/todos/**"
//,"/alacran/api/areas/iniciales"
,"/alacran/api/ordenProduccion/agregarOrdenv2"
).hasAnyRole("Generente de planeacion")
.antMatchers("/alacran/OrdenProduccion/entrega/**","/alacran/OrdenProduccion/recibe/**"
,"/alacran/api/ordenProduccion/obtenerOrdenesPorArea/**"
,"/alacran/api/ordenProduccion/guardaPromesa/**"
,"/alacran/api/ordenProduccion/guardaConfirma/**"
,"/alacran/api/ordenProduccion/obtenerOrdenesPorAreaRecibe/**"
,"/alacran/api/ordenProduccion/confirmaPromisega/**"
).hasAnyRole("Supervisor de Bordado","Supervisor de corte","Supervisor de costura","Supervisor de decorado","Supervisor de control de calidad","Supervisor de empaquetado","Supervisor de almacen de PT","Supervisor 8")
.antMatchers(<Here put my routes than are restricted>)
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/alacran/login")
.defaultSuccessUrl("/alacran/inicio")
.permitAll()
.and()
.logout().permitAll()
.and()
.exceptionHandling().accessDeniedPage("/alacran/error_403");
}
@Bean
public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
final Properties users = new Properties();
//users.put("user","pass,ROLE_USER,enabled"); //add whatever other user you need
return new InMemoryUserDetailsManager(users);
}
@Autowired
public void configureGlobal (AuthenticationManagerBuilder builder)throws Exception{
List<Trabajador> trabajadoresLista = this.trabajadores.encontrarTodos();
PasswordEncoder encoder = passwordEncoder();
UserBuilder users = User.builder().passwordEncoder(encoder::encode);
for(Trabajador p : trabajadoresLista) {
builder.inMemoryAuthentication().withUser(users.username(p.getUsuarioSesion()).password(p.getContra()).roles(p.getPuesto().getNombre()));
}
}
}
这是我的rest控制器,此restcontroller在应用程序中添加新用户
@RestController
@RequestMapping("/alacran/api/usuariosnuevos")
public class TrabajadorControllerRest {
@Autowired
private ITrabajadorService trabajador;
@Autowired
private IPuestoService puesto;
private InMemoryUserDetailsManager inMemoryUserDetailsManager;
@Autowired
public void SimpleSecurityController(InMemoryUserDetailsManager inMemoryUserDetailsManager) {
this.inMemoryUserDetailsManager = inMemoryUserDetailsManager;
}
@PostMapping("/nuevo")
@ResponseBody
public ResponseEntity<Trabajador> guardaUsuario(@RequestBody TrabajadorData TrabajadorData) throws Exception{
//hacemos la instancia de lo necesario
Trabajador trabajadorNuevo = new Trabajador();
Long idpuesto = TrabajadorData.getPuesto();
Puesto puestoNuevo = this.puesto.encontrarUno(idpuesto);
/*ahora configuramos la contraseña*/
//byte[] cifrada;
/*String password;
cifrada = this.cifra(TrabajadorData.getContra());
password = cifrada.toString();
*/
/*Set de las propiedades del objeto*/
trabajadorNuevo.setNombre(TrabajadorData.getNombre());
trabajadorNuevo.setDireccion(TrabajadorData.getDireccion());
trabajadorNuevo.setPuesto(puestoNuevo);
trabajadorNuevo.setTelefono(TrabajadorData.getTelefono());
trabajadorNuevo.setContra(TrabajadorData.getContra());
trabajadorNuevo.setUsuarioSesion(TrabajadorData.getUsuarioSesion());
inMemoryUserDetailsManager.createUser((UserDetails) User.withUsername(trabajadorNuevo.getUsuarioSesion()).password(trabajadorNuevo.getContra()).roles(trabajadorNuevo.getPuesto().getNombre()));
return ResponseEntity.ok(this.trabajador.guardar(trabajadorNuevo));
}
}
错误是
java.lang.ClassCastException: org.springframework.security.core.userdetails.User $ UserBuilder无法 强制转换为org.springframework.security.core.userdetails.UserDetails
答案 0 :(得分:0)
{"data":[1,2,3]}
您缺少调用$myArray = ["data" => ["1", "2", "3"]];
获得的{"data":["1","2","3"]}
实例上的调用inMemoryUserDetailsManager.createUser((UserDetails) User.withUsername(trabajadorNuevo.getUsuarioSesion()).password(trabajadorNuevo.getContra()).roles(trabajadorNuevo.getPuesto().getNombre()));