在Angular中使用TokenInterceptor来管理会话,同时在ASP.NET中使用ASP.NET Identity来控制权限和身份验证。
在Angular中,我们可以使用TokenInterceptor来管理会话。TokenInterceptor可以在每个HTTP请求发送前将Token添加到请求的header中,并在接收到HTTP响应后将Token保存在客户端(如cookie或localStorage)中。这样就可以在每个后续的请求中将Token添加到header中并向服务器发送,以验证客户端身份。
以下是一个简单的TokenInterceptor示例。首先需要安装angular2-jwt模块,然后创建一个名为TokenInterceptor的服务来实现拦截器:
import {Injectable} from '@angular/core'; import {Http, RequestOptionsArgs, RequestOptions, Request, Headers, Response} from '@angular/http'; import {Observable} from 'rxjs/Observable'; import {AuthHttp, JwtHelper} from 'angular2-jwt';
@Injectable() export class TokenInterceptor extends AuthHttp { constructor(private http: Http, options: RequestOptions) { super(options); }
public request(url: string | Request, options?: RequestOptionsArgs): ObservableBearer ${token}
);
} else {
url.headers.set('Authorization', Bearer ${token}
);
}
}
return super.request(url, options);
} }
然后将拦截器添加到模块的providers数组中:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HttpModule } from '@angular/http'; import { AppComponent } from './app.component'; import {TokenInterceptor} from './token.interceptor';
@NgModule({ imports: [ BrowserModule, HttpModule ], declarations: [ AppComponent ], providers: [ TokenInterceptor ], bootstrap: [ AppComponent ] }) export class AppModule {}
最后,我们可以在其他服务中使用TokenInterceptor来添加Token到每个请求的header中:
import {Injectable} from '@angular