- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在开始一个新项目,我们计划在其中构建一个 Restful 后端和一个 AJAX 字体端。我通过专注于识别我拥有的所有资源以及各种 HTTP 动词将做什么、它们的 URI 和这些资源的 JSON 表示来解决这个问题。
我正在寻找保护后端的最佳设计。这是我考虑过的设计列表。我正在寻找下面未列出的替代设计,以及优缺点建议。系统将使用 Spring 3.0 和可能的 Spring Security 3.0 实现,SSL 将用于系统的许多部分,但不是全部,因此一些请求可能来自 SSL,而另一些可能不会。
选项 1:使用 HTTP session
显示标准登录屏幕,创建服务器端 session 并让 tomcat 发回 jsessionid cookie,并让 ajax 客户端在每个 XHR 请求中包含 JSESSIONID cookie。由于以下原因,这个选项只是感觉它是错误的方法。
选项 2:找到一个基于 Java 的开源安全库来执行此操作
除了 Spring security 我没有找到任何其他 Java 库,任何建议都非常感谢。
选项 3:尝试使用现有协议(protocol),如 OAuth
在我对 OAuth 的简要介绍中,它似乎是为跨站点进行身份验证而设计的,每个站点都有自己的用户数据库。在这个系统中,我想要一个在所有后端 ajax 服务之间共享的全局用户数据库。
选项 4:使用 SAML 和 Shiboleth
这个选项似乎过分了,而且设置和维护起来非常复杂。
选项 5:在每个请求中发送用户名和密码
这要求用户在每次请求时都发送他们的用户名和密码,这意味着前端 AJAX 应用程序必须将用户名和密码存储为 JavaScript 对象,如果用户离开页面,则返回用户名/密码组合将消失,用户可能会被迫再次登录。我不希望前端尝试将用户名和密码放入 cookie,因为这会构成安全性。
选项 6:实现我自己的身份验证/授权协议(protocol)
创建一个 REST 服务,用户可以向该服务提供他们的用户名/密码组合,然后取回安全 token ,他们必须在每次请求时将其发送回服务。安全 token 将由服务进行数字签名,并具有到期时间。该 token 仅适用于大多数操作高安全性操作将需要一个新的登录屏幕作为确认操作的端口。
这种方法的问题是我必须发明另一种安全协议(protocol),这似乎完全是浪费时间。
我确信我不是唯一一个遇到这个问题的人,我希望堆栈溢出社区可以指出一些我还没有找到的选项和工具。
最佳答案
看看Apache Shiro .它是一种身份验证系统,具有 session 管理功能,可用于跨应用程序共享 session 。这可能是最容易做到的事情。
或者您可以使用 Spring Security(或 Shiro)和一个在 webapps 之间共享的 Remember Me cookie(只要它们在同一个 HTTP 域中)。记住我 cookie 类似于选项 6 中的 token 。您可以在 cookie 上设置过期时间,使其像 session cookie 一样短暂,或者像普通记住我一样长期存在。
关于ajax - 如何为 REST 后端/Ajax 前端应用程序设计认证和授权系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981045/
我有一个使用 css 列的下拉菜单,当我使用 jquery slide() 时,它会调整下拉框的大小,并重排内容直到达到完整高度。 这是一个工作示例 https://codepen.io/peterg
我有一个带有嵌套 ScrollViewer 的 Expander,如下所示: 代码(简化版)
我想在所有 ajax 调用之后调用一些 javascript 函数。我知道如何调用每个单独的 ajax 调用中的函数,如下所示: function xyz() { if (window.XMLHttp
我想将值从应用程序端传递到 api。在此 api 调用中传递图像、名字、电子邮件、电话和位置。在 Debug模式下,检查值不会被传递。 代码下方 File file = null;
我正在尝试在使用reportlab生成的pdf中的表格后插入分页符,我正在使用以下函数生成pdf: def render_to_pdf(template_src, context_dict): t
CBPeripheralManager 是否有推荐的方法来终止连接。到目前为止我发现的最好的方法就是干脆不响应动态值,然后 BLE 堆栈似乎关闭了连接,但这似乎很粗糙。 一定有更好的方法吗? 最佳答案
我的 API 的 REST 端位于以下地址:http://test.jll.aplikacje-dedykowane.pl/rest/warehouse/all 。现在,我尝试返回在此页面准备的 JS
我有以下 CPP 代码。我想做的是,当我的 native 端发生错误时,我会通知 Java 该错误。我用了How can I catch SIGSEGV (segmentation fault) an
限制对象的方法之一是像这样给函数添加限制 def ten_objects(): obj = Model.objects.all()[0:10] # limit to 10 retur
我目前在电信公司实习,这是一个专业,也是本科生。我有很多选择。据我所知,我知道独立应用程序端的 c、c++、c#、java 语言,在移动端我尝试进入 android 世界,也知道 php、mysql、
我想让我的边框底部看起来像这样: 有一个 flex 的末端。目前它看起来像这样: 我尝试使用的 CSS 是 border-bottom-right-radius: 10px;。代码如下所示:
我有一个 Flutter 项目,突然间,据我所知,我没有做任何特别的事情..Android 端开始显示错误,我完全迷路了,我完全不知道哪里出了问题,也不知道为什么会这样。 这就是我打开 android
我有一个自定义对象列表 (List) 。我需要将此数据发送到 React Native 端以显示在平面列表中。我该怎么做?这个列表出现在 类 NativeToReact(reactContext:Re
我有这个代码: #if defined(NOT_STANDALONE) JNIEXPORT void JNICALL sumTraces (JNIEnv* env, jclass caller,
我有一个定义一对多模型关系的 Django 应用程序。模型如下所示: from django.db import models # Create your models here. class Str
我有以下代码,它根据 IFrame 内容的大小调整 IFrame 的大小: function setIframeHeight(id) {
如何创建自定义过滤器 angularjs javascript Controller 端?我想通过 SegmentId 在名为段的数组中搜索,以创建过滤器,该过滤器通过 SegmentId 在段数组搜
我的代码在 netbeans 8.0.2 中我几乎尝试了所有方法,但没有结果。请帮助我。如何在 netbeans 中显示它? 最佳答案 您只需单击源包(源文件),它就会显示您的项目文件。 关于java
我想这是纯 C++ 问题和 OpenGL 问题之间的一种交叉。我有一个统一的缓冲区,并在其中分配 sizeof(ShaderData) 字节的空间。我在着色器的 GPU 端使用 std140 布局。
我对 Hadoop 中 reduce 端的文件合并过程的理解有问题,因为它在“Hadoop:权威指南”(Tom White)中有所描述。引用它: When all the map outputs ha
我是一名优秀的程序员,十分优秀!