2016-11-28 80 views
0

我会创造在角2.认证创建帖子服务:角2令牌,并权威性

constructor(http: Http) { 
    this.http = http; 
    let currentUser: IUserTokenType = JSON.parse(localStorage.getItem("currentUser")); 
    this.token = currentUser && currentUser.token; 
} 
public loginC (username: string, password: string): Observable<boolean> { 
    return this.http.post(authURL + loginURL, 
          JSON.stringify({ password, username })) 
    .map((response: Response) => { 
     let token: string = response.json() && response.json().token; 
     if (token) { 
      this.token = token; 
      localStorage.setItem("currentUser", JSON.stringify({ token, username})); 
      return true; 
     } else { 
      return false; 
     } 
    }); 
} 

并有login()功能:

private router: Router; 
private authenticationService: ServerDataComponent; 
constructor (router: Router, authenticationService: ServerDataComponent) { 
    this.router = router; 
    this.authenticationService = authenticationService; 
} 
public login(): void { 
    this.loading = true; 
    this.authenticationService.loginC(this.model.username, this.model.password) 
     .subscribe((result: boolean) => { 
      if (result === true) { 
       this.router.navigate(["table_per"]); 
      } else { 
       this.error = "Введен неверный логин и/или пароль"; 
       this.loading = false; 
      } 
     }); 
} 

这是我的模板:

<form name="form" class="form col-md-12 center-block"> 
     <div class="form-group"> 
     <input type="text" class="form-control input-lg" [(ngModel)]="model.username" placeholder="Логин" name="username"> 
     </div> 
     <div class="form-group"> 
     <input type="password" class="form-control input-lg" [(ngModel)]="model.password" placeholder="Пароль" name="password"> 
     </div> 
     <div class="form-group"> 
     <button (click)="login()" class="btn btn-primary btn-lg btn-block" type="submit">Войти</button> 
     </div> 
     <div *ngIf="error" class="alert alert-danger"> 
     {{error}} 
     </div> 
    </form> 

而当我点击按钮登录我有这个错误:Unexpected of json input。也许角没有读取令牌?

回答

1

您必须为您的JSON属性声明名称。

有两个错误的JSON对象!

JSON.stringify({ 'password': password, 'username': username }) 
JSON.stringify({ 'token': token, 'username': username}) 
public loginC (username: string, password: string): Observable<boolean> { 
    return this.http.post(authURL + loginURL, JSON.stringify({ 
     'password': password, 
     'username': username 
     })) 
    .map((response: Response) => { 
     let token: string = response.json() && response.json().token; 
     if (token) { 
      this.token = token; 
      localStorage.setItem("currentUser", JSON.stringify({ 'token': token, 'username': username})); 
      return true; 
     } else { 
      return false; 
     } 
    }); 
} 
+0

我宣布,但nothiong发生 –

+0

什么也没有发生?但错误没有错误..?! – mxii

+0

看,我输入登录表单登录名和密码,然后我发布服务器登录名和密码,然后服务器发送我会话并重定向到另一个页面。但重定向没有完成,我得到了错误的意见json –