【问题标题】:enable asp.net web api session when working with angular5 on localhost在本地主机上使用 angular5 时启用 asp.net web api 会话
【发布时间】:2018-09-14 20:42:19
【问题描述】:

在生产模式下,我在同一个站点上有 angular 5 客户端和 web api,所以我对会话没有任何问题,但在开发模式下,我的 angular 5 托管在 localhost:4200 上,每次调用时都会重置会话服务。

我可以在开发模式下将 angular 5 和 web api 托管在同一主机上,但这意味着我必须一直进行构建(这将产生很大的开销)。

有什么想法吗? 我应该使用会话吗?还是有更好的方法?

更新

首先就像 Andrei Dragotoniu 所说,在 web api 中使用 session 不是最佳实践,应该避免。

但是如果 web api 必须使用 session 我已经找到了开发模式的解决方案 - 向 angular 5 项目添加代理: 我必须将我的请求代理到我的 web api 服务器,而不是对 web api 的请求和 web api 是同一个域。

如何为 Angular 5 项目添加代理:

angular-cli server - how to proxy API requests to another server?

【问题讨论】:

    标签: asp.net angular asp.net-web-api angular5


    【解决方案1】:

    如果您谈论的是 dot net 后端会话,那么不,您不应该尝试使用它。原因很简单,一个 api 是无状态的,每个请求都是独立的,需要拥有完成它所需的所有数据。

    然而,在客户端,您可以使用一些允许您存储内容以供以后使用的东西,本地存储是一个很好的选择。

    此外,在 Angular 中,您可以使用单例服务共享数据:https://angular.io/guide/singleton-services

    这些服务只创建一次,您可以在其中存储数据,将它们注入任何需要的组件中,它们真正成为一种共享数据的方式。如果您碰巧硬重新加载您的应用程序,所有数据都将丢失,因此在这种情况下本地存储可以提供帮助。

    我怀疑你最终会得到单例服务和本地存储的组合,但不要尝试在无状态 api 中使用会话。

    【讨论】:

    • 顺便说一句,我的数据是安全的,我不能在客户端存储它
    • @Andiei 你对会话有误。根据您的概念,没有什么叫做会话。无论是 mvc 还是 api,每个请求都是无状态的,所以服务器端 Session 概念对你来说是个骗局。此外,没有所谓的基于 Cookie 的身份验证,我相信您知道身份验证发生在服务器端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2022-08-20
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多