首先,大家下午好,我希望你没事。
我是AngularJS的新手。我使用Visual Studio,Ionic 2和打字稿。
我已经设法通过.net中的REST api提供我的应用程序,现在我已经实现了一个令牌进行测试。它是Microsoft.Owin.Security.OAuth ... 在我在Xamarin中制作令牌之前它已经奏效了。现在我尝试使用Angularjs:
import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Storage } from '@ionic/storage';
import { URLSearchParams } from "@angular/http";
import 'rxjs/add/operator/map';
import 'rxjs/Rx';
public GetValidatedToken(){
this.urlToken = 'http://localhost:63634/token';
this.headers = new Headers();
this.headers.append('Content-Type', 'application/x-www-form-urlencoded');
// this.data = 'grant_type=password&username=' + 'User' + '&password=' + 'user1234-';
// this.data = "grant_type=password" + "&username=User" + "&password=user1234-";
this.urlSearchParams = new URLSearchParams();
this.urlSearchParams.append('grant_type', 'password');
this.urlSearchParams.append('username', 'User');
this.urlSearchParams.append('password', 'user1234-');
this.data = this.urlSearchParams.toString();
this.http.post('http://localhost:63634/token', this.data, { headers: this.headers })
.subscribe(res => {
if (res.json().success) {
window.localStorage.setItem('token', res.json());
this.jsonresult = window.localStorage.getItem('token');
console.log('Sucesso!');
} else {
this.jsonresult = 'Erro ao pegar token.';
console.log('Deu erro!');
}
});
return (this.jsonresult);
}
我想用这个函数返回标记字符串。 错误在于它没有成功,它会进入" else"。另一个问题是"结果"功能。 即使我在变量中放了一条消息,但在另一个类中没有返回内容......它返回" undefined"
在另一堂课中,我这样说:
import { TokenValidate } from '../token/TokenValidate';
...
constructor(public http: Http, public tokenValid: TokenValidate, ) {
this.http = http;
this.token = this.tokenValid.GetValidatedToken();
console.log('Token bearer :' + this.token);
}
我做了很多研究,所以我没有打开一个问题,但它没有用。
记住人们,我对此完全陌生,它肯定是一个荒谬的细节
令牌类型是" Bearer"。
提前感谢您的帮助。 阿,阿曼达马林斯。
答案 0 :(得分:0)
我设法解决了:
>constructor(public http: Http) {
> this.http = http;
>}
>
>public GetValidatedToken (credentials: string){
> this.urlToken = 'http://localhost:63634/Token';
>
>
> var header = new Headers();
> header.append('Content-Type', 'application/x-www-form-urlencoded');
>
> this.http.post(this.urlToken, credentials,{ headers: header })
> .subscribe(res => {
> this.result = res.json();
> localStorage.setItem('token',this.resultado.access_token);
> });
>
> this.jsonresult = localStorage.getItem('token');
> //console.log(this.jsonresult);
>
> return
> ( this.jsonresult );
>}
>constructor(public http: Http, public tokenValid: TokenValidate){
> this.http = http;
> this.headers = new Headers ({'Content-Type': 'application/json',
> 'Accept': 'q = 0.8; application/json; q = 0.9'});
> this.creds = "grant_type=password" + "&username=User"
> +"&password=user1234-";
> this.token = this.tokenValid.GetValidatedToken (this.creds);
> console.log ('Token bearer:' + this.token);
> this.headers.append ('Authorization', 'Bearer' + this.token);
>
> this.options = new RequestOptions({headers: this.headers});
>}
>
>getUsers(){
> if (this.data){
> return Promise.resolve(this.data);
> }
>
> return new Promise(resolve => {
> this.http.get (this.apiUrl+'/user', this.options)
> .map(res => res.json())
> .subscribe(data => {
> this.data = data;
> solve(this.data);
> });
> });
>}
我希望它可以帮助那些需要它的人。
谢谢! =)
Att Amanda Marins。