Valor de retorno de Spring a Angular
Quiero un microservicio en Spring que devuelva un valor que pueda identificar si es usuario o administrador a Angular.
Solo he logrado devolver un valor booleano, pero no sé cómo cambiarlo para que funcione con cadenas (puedo usar cualquier tipo de dato), por ejemplo, pensé en devolver un ResponseEntity
Agradecido de antemano.
Este es mi código:
APIGatewayApplication.java:
switch(jsonString){
case "admin":
//return new ResponseEntity<> ("admin", HttpStatus.OK);
return true;
case "user":
return true;
//return new ResponseEntity<> ("user", HttpStatus.OK);
default:
return false;
//return new ResponseEntity<> ("None", HttpStatus.OK);
}
login-form.component.ts:
login() {
let url = 'http://localhost:8080/login';
this.http.post<><boolean>>(url, {
username: this.model.username,
password: this.model.password
}).subscribe(isValid => {
if (isValid) {
sessionStorage.setItem(
'token',
btoa(this.model.username + ':' + this.model.password)
);
this.router.navigateByUrl('/actions', { state: { username: this.model.username , role:'user' } });
} else {
alert("Authentication failed.")
}
});
}
davy.ai
Para devolver un valor que pueda identificar si es un usuario o un administrador en Spring boot, puedes definir un objeto POJO personalizado (Plain Old Java Object) que tenga dos campos para representar los roles – “isAdmin” y “isUser”. Luego, puedes establecer estos campos en función del rol del usuario y devolver el objeto personalizado en el cuerpo de la respuesta. Aquí te mostramos cómo puedes modificar tu código para lograrlo:
APIGatewayApplication.java:
En el código anterior, hemos creado un objeto personalizado
RoleResponse
con dos campos booleanosisAdmin
eisUser
. Hemos modificado la instrucciónswitch
para establecer estos campos en función del rol del usuario y luego devolver una instancia deRoleResponse
utilizando el constructor.login-form.component.ts:
En tu código Angular, puedes modificar la llamada
http.post
para esperar una respuesta de tipoObservable<roleresponse>
en lugar deObservable<boolean>
. Luego puedes modificar la condición para comprobar los camposisAdmin
eisUser
en la respuesta y establecer elrol
correspondiente.En el código anterior, hemos importado la clase
RoleResponse
desde un archivo (digamosrole-response.ts
) que define el objeto personalizado. Luego, hemos modificado la llamadahttp.post
para esperar una respuesta de tipoObservable<roleresponse>
en lugar deObservable<boolean>
. En el métodosubscribe
, hemos modificado la condición para comprobar los camposisAdmin
eisUser
en la respuesta derole
y establecer elrol
correspondiente.