【发布时间】:2019-03-22 01:11:09
【问题描述】:
我想记住变量loggedIn的值,因为appComponent.html中对应函数的值取决于它的值。请问如何实现?
应用组件的teamplate:
<li class="nav-item">
<a class="btn btn-outline-success"
[class.btn-outline-success]="!this.loggedInService.loggedIn"
[class.btn-outline-danger]="this.loggedInService.loggedIn"
(click)="this.loggedInService.loggedIn ? logout() : logIn()">
{{this.loggedInService.loggedIn? 'Exit' : 'Enter'}}
</a>
</li>
应用组件代码:
export class AppComponent implements OnInit {
constructor(private loggedInService: LoggedinService,
private router: Router) {
}
ngOnInit() {
}
logIn(): void {
this.loggedInService.login();
if (this.loggedInService.loggedIn) {
let redirect = this.loggedInService.redirectUrl ? this.loggedInService.redirectUrl :
'/gallery';
this.router.navigate([redirect]);
}
}
logout(): void {
this.loggedInService.logout();
this.router.navigate(['/']);
}
}
登录服务:
export class LoggedinService implements OnInit {
redirectUrl: string;
loggedIn: boolean = false;
constructor() {}
ngOnInit(): void {}
login(): boolean {
localStorage.setItem('login', 'true');
return this.loggedIn = true;
}
logout(): boolean {
localStorage.removeItem('login');
return this.loggedIn = false;
}
}
【问题讨论】:
-
您可能想研究 cookie:D
-
请注意,您的策略存在巨大的安全风险。如果您依赖于客户端的loggedIn 值是真还是假,这可能很容易被渗透者伪造,并且可能发生不需要的事情,例如身份盗用、数据泄露等。你可能不想要那个。
标签: javascript html angular typescript angular6