2017-12-19 19 views
-1

私はユーザーロギングサービスを作ろうとしていますが、ユーザーがログインボタンをクリックすると、ユーザー名とパスワードが正しいサーバーであれば、apiサーバーに呼び出されます。ユーザー情報で応答し、私は、ユーザー変数に、この情報を解析する必要があり、ユーザーがnullでない場合は、trueそれ以外の戻りがfalseを返しますが、常に法と真...角度HTTPリクエスト - データの取得

ユーザーサービスを返しmetod:

import { Injectable } from '@angular/core'; 
import { HttpClient } from '@angular/common/http'; 
import 'rxjs/add/operator/map'; 
import { User } from '../entities/User'; 

@Injectable() 
export class UserService { 

    private usersUrl: 'http://localhost:8080/api/users'; 

    user: User; 

    constructor(private http: HttpClient) {} 

    isLoggedIn() { 
    return this.user != null; 
    } 

    isAdmin() { 
    return this.user.isAdmin; 
    } 

    unLoggin() { 
    this.user = null; 
    } 

    login(username: string, password: string) { 
    return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`) 
     .map(
     user => { 
      this.user = user; 
      return this.user != null; 
     }); 
    } 

} 

jsonのユーザー例:

{"id":2,"name":"Some","email":"sometni","username":"iafouafa","password":"Hoifhnaol"} 

私は複数の問題があると思いますが、最初はメソッドが無効ですが、これは解決できますが、返すブール値にリメイクし、最後にreturn演算子を使用しないと、常にfalseを返します。詳細が必要な場合は、必要なものを教えてください。

私の悪い英語のために申し訳ありません。

ありがとうございました!

+0

を呼び出すことができますどこか

this.login(username,pass).subascribe(user => { this.user = user; } 

ログイン performeロギングを実行するには、あなたがloginメソッドと呼ばれることがありますか?参考:角度のあるHttpClientを使用して観測値(RXJSのcf参照)を返す場合、要求を実行するには、それを購読する必要があります: 'this.login.subscribe(data => { console.log(" User Login "+ data" }); ' –

+0

マップメソッドを削除してコードを使用すると、ユーザー名とパスワードが正しくなるようにコンソールjson文字列にログが記録され、' data => {this.user = data} 'と' return this.user!= null'を返します。偽を返します –

答えて

0

これを試してみてください。

login(username: string, password: string) { 
    return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`) 
     .map(
     user => { 
      return user; 
     }); 
    } 

は今、今、あなたのisLoggedIn()メソッド

+0

ありがとう、それは動作します! –

関連する問題