gpt4 book ai didi

java - 使 Json 成为 Angular 对象

转载 作者:行者123 更新时间:2023-12-01 18:47:22 25 4
gpt4 key购买 nike

我遇到了一点困难,从我所做的项目的登录系​​统中出来,该项目是用JAVA、SPRINGBOOT编写并链接到ANGULAR我在服务器上有一个登录函数,它返回一个 JSON 对象,如下所示:{“类型”:2,“ token ”:“dab022de 011a 4”}为了进一步测试,我想在获得这两个 obj 后以 Angular 使用它们,例如:如果您输入= 2,您将看到一个为您量身定制的组件,如果您输入 = 1,您将看到一个不同的组件为此,我确实需要将服务器的返回值捕获到一个对象中,例如:this.clientType = _________?附加一些代码以使其更清晰:

登录服务器端代码:

@PostMapping("/login")
public ResponseEntity<LoginInfo> login(@RequestParam String email, @RequestParam String password)
throws InvalidLoginException {
ClientSession clientSession = loginSystem.createClientSession(email, password);

if (clientSession == null) {
throw new InvalidLoginException(
String.format("Invalid login with email: %s and password: %s .", email, password));
}
String token = generateToken();
clientSession.accessed();
LoginInfo loginfo;
for (Entry<String, ClientSession> entry : tokensMap.entrySet()) {
if (entry.getValue().getAbsService().getClientId() == clientSession.getAbsService().getClientId()
&& entry.getValue().getAbsService().getRole() == clientSession.getAbsService().getRole()) {
return ResponseEntity.ok(loginfo = new LoginInfo(entry.getValue().getAbsService().getRole(), token));
}
}
tokensMap.put(token, clientSession);
LoginInfo loginInfo = new LoginInfo(clientSession.getAbsService().getRole(), token);
return ResponseEntity.ok(loginInfo);
}

typeSqript 中的登录功能:

login():void {
let userCredentials = new UserCredentials(this.email, this.password);

let obsJwt = this.authService.authenticateMe(userCredentials);
obsJwt.subscribe(myToken=>{
console.log(myToken);//return {"type":2,"token":"dab022de 011a 4"} for example
localStorage.setItem("token",myToken.any); // here i want to put just the token, its not working too...
this.modeService.mode = this.modeService.LOOGED_IN;

}, err=>{
alert("error: " + err.message);
})
}

在这个函数中,我对任何事情都不确定,我对 Angular 还很陌生,所以如果您有任何一般性的改进建议,我很乐意听到

最佳答案

这取决于返回 authenticateMe 的内容。 authService的功能.

假设从类返回一个对象或实现一个接口(interface),例如 Observable<LoginResponse>其中:

interface LoginResponse {
type: number,
token: string
}

如果是这种情况,那么您只需要访问属性即可,

obsJwt.subscribe(myToken=>{
localStorage.setItem("token", myToken.token);
localStorage.setItem("type", myToken.type);
}, err=>{
alert("error: " + err.message);
})

如果由于某种原因是一个字符串 Observable<string>如果是json格式,那么你需要将其解析为一个对象,

obsJwt.subscribe(myToken=>{
const obj = JSON.parse(myToken);
localStorage.setItem("token", obj.token);
localStorage.setItem("type", obj.type);
}, err=>{
alert("error: " + err.message);
})

关于java - 使 Json 成为 Angular 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com