- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Backbone 和 RequireJS 为注册或非注册用户创建 js 应用程序。为了从数据库中检索数据,我使用简单的 JSON Web 服务,当然有些方法不适用于查询。问题是我不知道应该在哪里或如何存储从服务器检索的身份验证数据,而无需在每个 View 中重新加载它。我应该使用 cookie 吗?
最佳答案
我想这取决于您的身份验证、授权方法以及您需要为用户考虑的安全类型。如果你想成为 RESTful,你不能有 session 来保存状态(至少在服务器端)。你可以,但如果这对你很重要的话,由于在服务器上保存状态,它不会是 RESTful。我听说可以在客户端保存状态,但从我读到的内容来看,我不确定社区对采用这种方法的某些实现有何看法。 (就像 cookie 一样,稍后我会重新讨论。)
假设有人使用用户名和密码登录。您可以将这些信息保存在您的 Backbone 应用程序中,也许您有一个名为 AUTH 的模型可以执行此操作。每次您向服务器发出请求时,您都会在每次旅行时发送该数据,此时服务器会进行身份验证并授予或拒绝对给定资源的访问权限。如果您使用 Basic Auth,我认为此信息将位于标题中。使用 SSL 减轻了围绕通过网络发送此信息的一些主要安全问题,并且在接下来的讨论中,我们假设这就是我们正在使用的。
您可以执行此操作的另一种方法是使用加密的 cookie,即加密的 cookie session 。这就是我对当前应用程序所做的。老实说,我不知道这算不算违反 RESTful 原则。网络上的一般聊天似乎有很多“cookie 不好, session 不好”,有些人说“变得真实”。如果有人可以访问用户的计算机,使用 cookie 会使您暴露于 cookie 劫持,但根据您的应用程序和安全需求,这可能不是一个不合理的选择。它对我有用,如果它不是 RESTful,我喜欢称它为 RESTLike。
最后,我将只描述我的设置。如果能得到您的想法以及 Stack 对此的意见,那就太好了。
基本上我有一个设置,当有人访问主页时,服务器会检查加密的 cookie session 。如果 cookie session 无效或不存在,它会为用户提供常规页面并有机会登录。当他们登录时,我通过 POST 发送该信息,因此它在请求的正文中而不是 URI 中。 (这在技术上违反了 REST HTTP 动词概念,因为您使用 POST 来保存资源。)当处理该信息时,检查用户名,传递由唯一盐创建的哈希,然后服务器创建一个加密的 session cookie 并传递它返回给用户。现在,每次我的用户访问需要身份验证的路由时,服务器都会检查 cookie 以确保它仍然有效(时间限制、用户信息等),如果有效,则允许访问。如果不是,它会销毁 cookie 信息并发回适当的状态代码。 Backbone 应用对此使用react,重置任何不应由未经身份验证的用户掌握的 View 和数据,并向他们显示登录屏幕。
希望这能给你一个想法。这是我如何做的答案,但如果有人有批评或更好的想法,我会很乐意为他们投票。
关于javascript - 当我使用 Backbone 和 AMD 模块时,存储授权数据的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963452/
AMD 似乎是按需加载 javascript 模块的最佳实践。 这应该适用于用户仅使用一部分可用功能的大型网络应用程序。 我读过有关优化器的信息,它将所有必需的模块连接到一个文件中,并且我读过有关无优
我在一个项目中使用 requirejs,并且有 2 个模块: a.js:是一个非 AMD 模块,我无法触及其代码 b.js:是我用 define() 函数编写的 AMD 模块。它需要 a.js 才能工
有没有办法导入或注释 Typescript 模块,以便在生成 AMD 兼容模块时自动将外部 AMD 模块作为依赖项包括在内?: tsc --module AMD example.ts 我尝试同时包含一
在我的项目中,有一个自定义第三方库(单个构建文件),他们使用几个非 AMD 和 AMD 文件创建了该库。并且大多数属性直接暴露给窗口对象。在我们的项目中,根据新的要求,我们必须使用 requireJS
我正在尝试创建一个由许多小文件(编译为 JavaScript-AMD 模块的 TypeScript 文件)构建的单个 AMD 库(模块)文件。 问题是: 我在类之间有循环依赖。 ( parent 需要
我有一个库 - 称之为 SomeLib - 它被定义为支持各种模块加载器: (function(global, factory) { if (typeof define === 'functi
一个星期以来,我开始学习如何将 require.js 与 Backbone.js 和 Underscore.js 一起使用。 这是一个非常困难的东西,但 3 天前我读到 Underscore 将不再支
main-bower-files无法抓取backbone-amd和underscore-amd ,有什么想法为什么以及如何解决它吗? gulpfile.js var mainBowerFiles =
我正在尝试使用 perf在我的带有 AMD cpu 的设备上,但我真的找不到任何关于如何获取的信息,比如说,cache-misses来自 AMD。我读到你需要写 -e rNNN ,其中 NNN是事件的
我对 AMD 波前和 OpenCL 的工作组大小的术语有些困惑。 我发现不同的来源做了不同的陈述。 我的问题是:AMDs GCN 技术的波前大小是多少,根据这个:opencl 上的工作组至少应该有多大
我正在尝试使用 Intern 测试 Require.js 项目。我在测试中遇到错误,其中在加载 jQuery 插件时未定义 jQuery。我的加载器配置如下所示: loader: { // A
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
Modernizr 是使用 AMD 定义编写的,这很好,因为这就是我当前项目所使用的,并且可以在需要时引入 Modernizr 依赖项。问题是,Modernizr 模块都需要一个平面文件夹层次结构,但
AMD 不久前宣布推出 Fusion 平台。读了一些相关内容后,我既兴奋又怀疑。例如,它应该使 GPU 和 CPU 共享相同的内存成为可能。 (GPU 和 CPU 都在同一个封装中)现在,由于 GPU
当我从 Android Studio 启动 AVD 时,它长时间显示黑色空白屏幕并且我看不到主屏幕。我查看了 2013 年之前的几个 Stack Overflow 帖子(Virtual Machine
AMD 是否允许您定义一个模块,其导出是动态的,具体取决于其他模块? 我遇到的问题是,即使正文中有 require 调用,define 也会立即返回。这意味着,如果模块的定义依赖于其他模块,则任何依赖
假设我有一个加载模块myModule的应用程序。所述模块需要一些其他资源才能工作(例如模板),因此 myModule 关心加载它所需的资源,这很巧妙。实际上,这很简单: // main.js requ
AMD 规范中是否有任何内容规定必需的模块必须提供相同的对象?假设所需的模块是提供给所有需要的模块的单个实例,这似乎是相当常见的做法,但是有什么可以防止模块加载器将加载的模块仅视为缓存(可能在某个时候
所以我现在一直在使用 require.js,但我意识到我实际上并不知道它在幕后是如何工作的。它说它是一个 AMD 加载器。 我知道 CommonJS 是同步的,这意味着它会在加载时阻止其他代码的执行。
有没有办法从*.ts 中设置编译模块的名称?一些 tsconfig、json 设置或一些可以执行此操作的 Gulp 插件。 目前我得到 define([], function(){ .. }) 但我不
我是一名优秀的程序员,十分优秀!