Angular+WebAPI应用中的会话管理

这是我想要做的

这是我想要做的

我在 Angular 创建一个 SPA。

我所有的业务逻辑都是用 Web API 编写的。

我从角做 HTTP 调用 REST API 和获取 JSON 数据,并将其绑定到角 UI。

这一切工作正常。进一步我想在我的应用程序中实现会话维护。

一旦用户登录,我调用另一个 API 来检查凭据是否正确,API 返回 true 或 false,根据 Uesr 重定向到主页。

现在在这里,我需要维护用户的会话,除非用户注销。

Cookie-& gt;我可以创建一个 cookie 来维护会话,但这将是有风险的,它可以帮助会话。

注意:我不是在谈论令牌身份验证,我相信它具有完全不同的目的。

如果你可以建议相关的东西可能是使用 node.js 或在角我不知道的东西,这将是一个很大的帮助。

如果你想建议我遵循的建筑。这也是受欢迎的。

9

正如每一个确认有没有办法安全地保存在客户端的 angularjs 信息。

每当用户启动我的 Web 应用程序时,我都会使用https://freegeoip.net/json/获取他 / 她的 IP 凭据。

第二步是使用他 / 她的 IP地址创建一个唯一的密钥(因为这对每个用户都是唯一的)

在登录期间在请求参数中发送此键

在服务器端,我们检查用户凭据并保存此密钥以验证未来的请求,我们还生成了一个令牌来验证用户会话

在登录响应时,我们将生成的令牌保存在本地存储中。

下次用户启动应用程序时,我们从 localstorage 获取令牌并使用 IP 生成唯一密钥。我们将两者发送到服务器,并验证令牌是否有效并与相同的唯一密钥关联。

如果用户仍在同一网络上,则验证成功,否则不成功。

Drawback

如果用户切换网络或他的 IP地址更改服务器认为他 / 她已注销。

6

对于大多数 AngularJS 应用程序,没有会话的概念。可能仍然存在身份验证和某种令牌,但存储会话信息(如页面之间的表单内容)存储在浏览器中的 ram,cookie,会话存储或本地存储中。

最好的方法是本地存储,您可以使用本地存储使用 javascript & amp;将数据存储在变量中

https://www.npmjs.com/package/angular-local-storage

验证用户从后端使用 API 调用(不要忘记调用 API 与令牌总是)之后,一旦 API 给出了积极的回应,你将这些数据存储在浏览器本地存储(这是正常的 JavaScript,你可以谷歌它)

这是从前端维护会话的方式。

只要它保留在浏览器中,用户就会登录,如果他没有清除本地存储或注销。

当客户端从任何 REST API 收到 HTTP 状态 401 未经授权的响应时,角度控制器会清除所有 Cookie 并将用户重定向到登录页面。当服务器一段时间(例如 10 分钟)未收到 app-token 时,服务器可能会发送 HTTP 状态 401 未经授权的响应。

5

这是一个有趣的问题。

由于您使用 Angular,我假设您熟悉服务和工厂的工作方式。它们都充当一个单例,这意味着在任何时间点只有一个实例。这意味着例如,任何时候您将一些数据存储到工厂中,它都将在您注入它有效地给您状态的任何控制器中可用。

想象一下,你以一种非常具体的方式构建你的 SPA。大多数人不会太深入 Angular,只是创建一个控制器,访问范围,在那里添加方法和东西,就是这样,他们完成了。

现在想象一下,您实际上将代码分开了一点。对于任何需要某些功能的东西,您都可以将该代码放入服务中,然后注入任何需要它的控制器中。如果您获得一些数据并进行一些计算,则将结果存储在服务中,并且该数据保留在那里。当然,当用户注销时,您可以删除上述数据。现在,如果用户使用 ctrl-f5 点硬刷新页面,则所有内容都将重新加载,

如果你想保持过去的用户硬刷新状态,你必须考虑其他选择。

您可以使用本地存储,这是一个 Html5 唯一的事情,这意味着仅在现代浏览器中支持。

但是,有一件事你总是需要考虑的是,你存储在客户端永远不会是真正安全的,因为它生活在客户端,这是不在你的控制之下。

如果你不喜欢使用本地存储或 cookie 的想法(我不怪你),你将不得不引入另一个层,其中会话是实际存储的,这将是一个后端层。因为你使用 dot net,你可以创建一个简单的 MVC 应用程序,给它几个控制器,可能会镜像你的 web api 一个。而不是直接调用 web api 控制器,你调用 MVC 一个。

这如何帮助?Well Web Api 是无状态的,那里不会有会话,因为它没有任何意义。但 Mvc 有 Session,这是你可以使用的。

所以你添加 MVC,让你的 MVC 控制器调用 Web API 的,他们返回 JsonResult,所以他们可以被称为相同的方式,你会调用一个 Web API 和处理会话,安全地在服务器端。

选择最适合您账单的解决方案。

3

Cookies 是要走的路。会话总是会成为一个问题,但它可以缓解。为您的会话密钥使用长密钥。并使用 HTTPS 站点。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(545)
使用Discord.Js更改不和谐公会的图标
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(39条)