使用分离的客户端和服务器进

Ron*_*537 8 authentication client-server node.js passport.js angular

我已经为客户端创建了角度为2的Web应用程序,并为服务器端创建NodeJSexpress框架.

对于客户端,我生成了angular-cli在a上运行的项目lite-server,因此我的客户端和服务器在2个不同的服务上运行.

我想整合ADFS身份验证.要实现身份验证,我正在使用passport-saml包.我的服务器端有一个中间件API,需要用户进行身份验证.

直接到达服务器(没有客户端)时,身份验证过程正常.

但是,我无法访问API通过@angular/http.我尝试了一个GET来自服务器的简单请求(在端点使用中间件),因此我得到了没有重定向的身份验证页面(我不认为这是核心问题,但实际的实现是).

在对服务器和客户端使用单独的服务时,如何正确实现身份验证?

dan*_*y74 0

当客户端向服务器执行 GET 操作时,您没有提供有关失败响应的详细信息。是400吗?401?404?500?您收到 CORS 错误了吗?

为什么您使用 GET 作为登录端点。您应该在 POST 负载中直接发布凭据吗?

不管怎样,在你的 angular2 代码中,你应该有一个带有登录方法的身份验证服务。登录方法应该做类似的事情..

login(credentials) {
    return http.post(your_server_url, payload);
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以订阅登录方法返回的 Observable,如果router.navigate主页一切正常或不顺利,则显示登录错误消息。