【发布时间】:2018-04-03 13:06:37
【问题描述】:
我需要使用令牌认证登录 我创建了一项服务并尝试在帖子正文中传递参数,但响应为“输入意外结束” 我添加了代码服务和登录组件 每当我调试它总是说一个错误
服务的请求参数是 请求:{"type":"auth","user":"asdf","pass":"asdf"} 响应:{"code":200,"name":"adsf asdf","token":"asdfasdfasdfasdfdsf"}
是否有任何请求参数在标题中的帖子中传递错误
auth.service.ts
import { Injectable } from "@angular/core";
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import 'rxjs/add/observable/of';
import { Observable } from "rxjs/Observable";
import {TokenParam} from "../login/login.component";
import { error } from "util";
@Injectable()
export class AuthService{
private TokenApi:string ="http://10.102.72.70/Service.aspx";
currentUser:any
AccessToken:string="";
constructor(private _http:Http){ }
loginUser(userName:string,password:string):Observable<any>{
let headersForTokenApi = new Headers({
'content-type':'application/json'});
//let options= new RequestOptions({headers:headers});
//let loginInfo = "type=auth?user="+userName+"? password="+ password
return this._http.post(this.TokenApi, JSON.stringify({ type: "auth", user: userName, pass: password }), { headers: headersForTokenApi})
.map(res=> res)
}
}
login.component.ts
<h1>Login</h1>
<hr>
<div class="col-md-4">
<form #loginForm="ngForm" (ngSubmit)="login(loginForm.value)" novalidate>
<div class="form-group">
<label for="userName">User Name:</label>
<input id="userName" type="text" [(ngModel)]="userName" name="userName" required class="form-control"/>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input id="password" type="password" [(ngModel)]="password" name="password" required class="form-control" />
</div>
<span>
<button type="submit" class="btn btn-primary" [disabled]="loginForm.invalid">Submit</button>
</span>
<button type="button" class="btn btn-default" (click)="cancel()">Cancel</button>
</form>
<br>
<div *ngIf="loginInvalid" class="alert alert-danger">Invalid Login Info</div>
</div>
login.component.ts
import { Component } from "@angular/core";
import { AuthService } from '../services/auth.service';
@Component({
selector:"app-login",
templateUrl:"login.component.html"
})
export class LoginComponent{
loginInvalid = false;
tokenParams:TokenParam
userName:string
password:string
constructor(private authService: AuthService) {
}
login(formValues) {
console.log(formValues);
this.authService.loginUser(formValues.userName, formValues.password).subscribe(
data=>{
this.tokenParams=data;
this.authService.AccessToken=this.tokenParams.token;
console.log(this.tokenParams)
}
)
}
}
export class TokenParam {
code: string
token: string
}
export class ILogin
{ type:string= "auth"
user:string
pass: string }
【问题讨论】: