【问题标题】:Generate Server Side session using Angular 5 (REST Webservices)使用 Angular 5 (REST Webservices) 生成服务器端会话
【发布时间】:2018-05-23 11:14:19
【问题描述】:

我正在研究 Angular-5Spring 框架。 在 Spring 框架中,我们使用 RESTEG 和 Angular 来制作 web 服务。我从 Angular-5 服务调用 web 服务。

现在的问题是 Angular 正在 4200 上工作。而 Tomcat 正在 8080 端口上工作。因此,当我通过 web 服务调用它时,不会生成 spring 中的服务器端会话。

Web 服务工作正常我能够调用 Web 服务并从 Web 服务获得响应。 但我无法生成在后端生成的会话。

我也尝试过使用 Angular-5 的 代理服务器 并且代理工作正常。 对于代理设置,我正在使用这个问题,它工作正常:- angular-cli server - how to proxy API requests to another server?

我能够从中获取请求和响应,但是在创建代理后,我遇到了会话未创建的相同问题。

注意:- 当我从 angular-5 (ng build) 构建并将其放入 Tomcat 时,会话工作正常,但在开发 web 服务时。我无法生成会话。

示例 :- 我有一个网络服务, Url1 :- http://localhost:8080/MacromWeb/ws/login

我正在从端口 4200 上的 angular js 调用 Web 服务。

Url2 :- http://localhost:4200/#/login 带有参数 emailpassword

所以,当我从 Angular 调用 webservices 时,它工作正常,它也给了我响应,但是在服务器端创建的会话没有生成。

【问题讨论】:

    标签: java angular web-services


    【解决方案1】:

    在这种架构中没有共享会话(这与 Angular 本身无关)。它发生在客户端与服务器分开的任何类型的应用程序中(运行 javascript 的浏览器无法访问服务器的会话。这是不同的场景,当您编写某种使用服务器的应用程序时) -side 渲染模板,如 PHP、Rails、带有 Velocity 的 Java 或其他模板引擎等...)。通常所做的是使用 Web 令牌来处理客户端和服务器端之间的安全性。

    你可以看看这个full example,基于 Angular。

    【讨论】:

    • 感谢您的回答。所以基本上从前端我们不能创建服务器端会话?因为它适用于邮递员,并且在创建角度构建后它也有效。
    • 服务器可以创建会话,但浏览器无权访问。通常的模式是(1)客户端在第一个请求中发送一些数据来识别它/用户,(2)服务器验证并使用令牌响应(可以有到期日期,超时等......),( 3) 客户端获取此令牌,将其持久化,然后 (4) 将其发送回每个请求的标头中,以及 (5) 服务器实现一个过滤器,在任何需要的地方验证此令牌。
    • 哦,明白了。感谢您快速而完美的回复。
    • 当然,您可以将会话 id 发送给客户端,客户端将其发回。但这样做存在一些问题。您可以在此处阅读更多相关信息 (stormpath.com/blog/secure-single-page-app-problem),我建议您使用 Google 搜索“SPA 会话”
    • 顺便说一句,您可以将您的后端应用程序视为其他应用程序可以使用的 API。想想 Google Maps API(或您曾经使用过的其他 API):有很多很多客户在使用它。客户端和 api 之间没有共享会话。取而代之的是,您必须发送在每个请求的仪表板中创建新应用程序时提供的访问令牌。是因为同样的原因:必须有一个密钥来标识谁在请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多