Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Angular 5中基于cookies的身份验证_Php_Angular_Express_Angular5 - Fatal编程技术网

Php Angular 5中基于cookies的身份验证

Php Angular 5中基于cookies的身份验证,php,angular,express,angular5,Php,Angular,Express,Angular5,我正在使用Angular 5和ExpressJS开发一个网站。成功登录后,我将从服务器向客户端发送access\u tokencookie。浏览器中的Cookie设置成功。但当我在登录后发送其他请求时,访问令牌cookie不会像通常的客户机-服务器通信(会话cookie)那样自动发送。我的问题是 我的实现正确吗 我需要使用拦截器吗 我是否需要使用头来发送令牌而不是cookie 如果您的服务器和客户端在不同的端口上运行,那么您的所有XMLHttpRequest 您应该使用以下拦截器: @Inje

我正在使用Angular 5和ExpressJS开发一个网站。成功登录后,我将从服务器向客户端发送access\u tokencookie。浏览器中的Cookie设置成功。但当我在登录后发送其他请求时,访问令牌cookie不会像通常的客户机-服务器通信(会话cookie)那样自动发送。我的问题是

  • 我的实现正确吗
  • 我需要使用拦截器吗
  • 我是否需要使用头来发送令牌而不是cookie

如果您的服务器和客户端在不同的端口上运行,那么您的所有
XMLHttpRequest

您应该使用以下拦截器:

@Injectable()
export class CustomInterceptor implements HttpInterceptor {

    constructor() {
    }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        request = request.clone({
            withCredentials: true
        });

        return next.handle(request);
    }
}
@Injectable()
导出类CustomInterceptor实现HttpInterceptor{
构造函数(){
}
拦截(请求:HttpRequest,下一步:HttpHandler):可观察{
request=request.clone({
证书:正确
});
下一步返回。处理(请求);
}
}

当使用cookie时,它们会在下一页加载时被接收,它们不会立即可用-您需要在服务时强制使用页面刷新,因此对于angular应用程序cookie来说并不常见,对吗?Sam Swift说了什么,因为angular在单个页面中呈现视图,页面刷新永远不会发生,除非显式完成,因此Cookie不会提供太多帮助。更好的方法是发送标头中的令牌,然后使用HTTP拦截器将其存储在客户端(本地存储),尽管拦截器是可选的。您是否在Angular development服务器上配置了代理,以便在相同的主机名和端口上运行您的客户端和服务器?两者都在相同的服务器上运行。但我不知道设置代理。我在哪里可以找到更多关于它的信息?