gpt4 book ai didi

javascript - 是否推荐将 angularjs 用于基于大规模身份验证的应用程序?

转载 作者:行者123 更新时间:2023-11-29 18:10:25 25 4
gpt4 key购买 nike

我学习和使用 angularjs 框架已经有一段时间了,虽然它的一些功能确实很棒,但在我看来它的关键功能对于基于身份验证的应用程序来说有点问题。

让我们看一个例子。假设我有一个有用户登录的网站,一旦用户登录,他就可以单击指向他/她的仪表板页面的链接。在仪表板上,用户可以看到一些私有(private)数据。现在,我习惯这样做的方式是在服务器端运行一些脚本,然后如果用户已连接,则返回一些 HTML,如果没有则将用户重定向到另一个位置。 angularjs 鼓励我这样做的方式是使用路由功能,像这样说:

when('/dashboard', {
templateUrl: 'dashboard.html',
controller: 'DashboardController'
})

这样,如果用户未连接,angularjs 将首先获取模板 HTML,然后 Controller 将获取一些数据并收到身份验证错误,然后将路由重定向到另一个位置。对我来说,这似乎是一个更糟糕的解决方案,原因不止一个:

1) 首先,我的 HTML 会暴露给所有人。虽然这不是毁灭性的,但它似乎是一种糟糕的安全做法(想象一下,你甚至没有 facebook 帐户,但你仍然可以看到所有 facebook 页面的 HTML,更糟糕的是,所有对象和字段之类的例如 user.accessToken)。

2) 我会向服务器发出大量请求,第一个请求获取模板,第二个用于身份验证验证和数据,第三个,可能第四个用于重定向。我假设 angularjs 缓存了模板,所以实际请求数量可能比我提到的要少,不过,在服务器端处理所有这些只是一个请求——和 angularjs 一样,它也不能加载整个页面,但只能加载所需的HTML 抛出 AJAX。我的案例是有争议的,但仍然有些地方似乎不对。

3) 这对我来说可能是最重要的问题。我在服务器端所做的一切都必须粘贴到客户端。例如,路由功能在服务器端和客户端都必须清晰 - 以防用户直接进入我的应用程序中的某个内部页面,或者通过应用程序链接中的路由进入。这意味着每次更改我的路由配置时,我都必须在服务器端执行一次,在客户端执行一次 - 在我看来,这也是我的代码的不良做法和模块化。

是否不推荐将 angularjs 用于此类应用程序?我是否应该使用补充我的应用程序的 angularjs 功能(如 Controller 、变量绑定(bind)等),但忽略那些没有的功能(如路由)?

我是不是看错了?

最佳答案

你没有看错,只是从不同的 Angular 来看。您不习惯开发 SPA,所以这很正常。

1) 当然 HTML 会向所有人公开,但这只是一个模板。它只包含 html 模板,不包含与每个人的 facebook 个人资料相关的具体数据。服务器控制返回给用户的数据,它只会返回用户有权查看的数据。实际上,这与非 SPA 没有什么不同,只是来回发送的数据量不同。

2) 对于普通应用程序,您首先必须请求登录页面,然后将数据发布到服务器,然后进行重定向。这是 3 个请求。对于 Angular,它将是第一次加载,第二个用于登录 View 模板,然后第三个用于发布登录数据,第四个用于获取主登录 View ,第五个用于 View 所需的数据。这只是另外两个。之后登录,如果用户单击注销然后再次登录,则只有两个请求与三个请求,或者如果他们关闭选项卡并返回,则将是 3 个请求。换句话说,差别不大。对于大多数情况,它会是相同数量的请求,甚至在缓存后更少。

3) 路由在 SPA 中的工作方式是它只发生在客户端。没有必要在服务器上也有它。只需重新编写所有请求的 url 以返回 index.html,然后 Angular 路由将处理其余部分。

关于它被推荐。确实没有这样的建议。由你决定。两者各有利弊。 Angular 的大部分缺点都与学习曲线有关。

关于javascript - 是否推荐将 angularjs 用于基于大规模身份验证的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27901504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com