- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试通读 GitHub 上一个开源项目的代码,发现自己在查看文件时感到困惑。下面代码中的“authenticator”是什么,它在哪里定义的。据我了解,它在任何地方都没有定义为一个类。这是项目网址:github repository
authenticator :server do
header "X-Server-API-Key", "The API token for a server that you wish to authenticate with.", :example => 'f29a45f0d4e1744ebaee'
error 'InvalidServerAPIKey', "The API token provided in X-Server-API-Key was not valid.", :attributes => {:token => "The token that was looked up"}
error 'ServerSuspended', "The mail server has been suspended"
lookup do
if key = request.headers['X-Server-API-Key']
if credential = Credential.where(:type => 'API', :key => key).first
if credential.server.suspended?
error 'ServerSuspended'
else
credential.use
credential
end
else
error 'InvalidServerAPIKey', :token => key
end
end
end
rule :default, "AccessDenied", "Must be authenticated as a server." do
identity.is_a?(Credential)
end
end
最佳答案
正如 Aetherus 提到的,它来自 gem moonrope
。
下面是使用方法
开始
首先,您需要定义一个验证器。身份验证器的作用是从 API 请求中提取“身份”。在此示例中,我们将使用每个用户唯一的 token 对我们的消费者进行身份验证。下面的示例演示了一个非常简单的身份验证器。
authenticator :default do
header "X-Auth-Token", "The user's unique API token.", :example => 'f29a45f0-b6da-44ae-a029-d4e1744ebaee'
error 'InvalidAPIToken', "The API token provided in X-Auth-Token was not valid.", :attributes => {:token => "The token that was looked up"}
lookup do
if token = request.headers['X-Auth-Token']
if user = User.find_by_api_token(token)
user
else
error 'InvalidAPIToken', :token => token
end
end
end
rule :default, "AccessDenied", "Must be authenticated as a user." do
identity.is_a?(User)
end
rule :anonymous, "MustBeAnonymous", "Must be anonymous." do
identity.nil?
end
end
让我们分解一下:
第一行设置身份验证器的名称。在大多数情况下,你只会有一个应该命名为 :default 的。这将适用于您的 API 中的所有操作。
接下来,我们定义 authenticator 使用 X-Auth-Token header 。我们提供说明和示例以供记录。
接下来,我们定义在尝试查找请求的身份时可能会引发 InvalidAPIToken 错误。我们包含一个描述以及应该随错误一起返回的属性的散列。
接下来,我们定义一个查找 block ,它指定如何从请求中查找您的身份对象。这是在将用于 API 中的任何操作的相同范围内执行的。此 block 将返回标识对象、引发错误或不返回任何内容。如果它返回一些东西,那将被用作身份对象并且请求将继续。如果它引发错误,错误将返回给用户并且请求将停止。如果不返回任何内容,请求将继续,但不会有身份。
接下来,我们设置一个默认访问规则,该规则在每次请求时执行,以验证该身份是否有权访问所请求的操作。默认规则将应用于所有操作,但是您可以创建其他可以为特定操作或 Controller 选择的规则。此规则的 block 必须返回 true 或 false 值,具体取决于身份是否满足访问条件。第二个参数是错误代码,如果请求不满足此条件,将返回该错误代码。第三个参数是对实际情况的描述(用于文档)。
最后,我们定义了一个匿名规则,可用于任何不应提供任何身份的操作。
这里有一个链接,可以提供有关用法的更多信息。 moonrope authentication
关于ruby-on-rails - ruby on rails 中的身份验证器是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753116/
我之前让 dll 注入(inject)器变得简单,但我有 Windows 7,我用 C# 和 C++ 做了它,它工作得很好!但是现在当我在 Windows 8 中尝试相同的代码时,它似乎没有以正确的方
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我有几个不同的蜘蛛,想一次运行所有它们。基于 this和 this ,我可以在同一个进程中运行多个蜘蛛。但是,我不知道如何设计一个信号系统来在所有蜘蛛都完成后停止 react 器。 我试过了: cra
有没有办法在达到特定条件时停止扭曲 react 器。例如,如果一个变量被设置为某个值,那么 react 器应该停止吗? 最佳答案 理想情况下,您不会将变量设置为一个值并停止 react 器,而是调用
https://code.angularjs.org/1.0.0rc9/angular-1.0.0rc9.js 上面的链接定义了外部js文件,我不知道Angular-1.0.0rc9.js的注入(in
我正在尝试运行一个函数并将服务注入(inject)其中。我认为这可以使用 $injector 轻松完成.所以我尝试了以下(简化示例): angular.injector().invoke( [ "$q
在 google Guice 中,我可以使用函数 createInjector 创建基于多个模块的注入(inject)器。 因为我使用 GWT.create 在 GoogleGin 中实例化注入(in
我在 ASP.NET Core 1.1 解决方案中使用配置绑定(bind)。基本上,我在“ConfigureServices Startup”部分中有一些用于绑定(bind)的简单代码,如下所示: s
我在 Spring MVC 中设置 initBinder 时遇到一些问题。我有一个 ModelAttribute,它有一个有时会显示的字段。 public class Model { privat
我正在尝试通过jquery post发布knockoutjs View 模型 var $form = $('#barcodeTemplate form'); var data = ko.toJS(vm
如何为包含多态对象集合的复杂模型编写自定义模型绑定(bind)程序? 我有下一个模型结构: public class CustomAttributeValueViewModel { publi
您好,我正在尝试实现我在 this article 中找到的扩展方法对于简单的注入(inject)器,因为它不支持开箱即用的特定构造函数的注册。 根据这篇文章,我需要用一个假的委托(delegate)
你好,我想自动注册我的依赖项。 我现在拥有的是: public interface IRepository where T : class public interface IFolderReposi
我正在使用 Jasmine 测试一些 Angular.js 代码。为此,我需要一个 Angular 注入(inject)器: var injector = angular.injector(['ng'
我正在使用 Matlab 代码生成器。不可能包含代码风格指南。这就是为什么我正在寻找一个工具来“ reshape ”、重命名和重新格式化生成的代码,根据我的: 功能横幅约定 文件横幅约定 命名约定 等
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我开发了一种工具,可以更改某些程序的外观。为此,我需要在某些进程中注入(inject)一个 dll。 现在我基本上使用这个 approach .问题通常是人们无法注入(inject) dll,因为他们
我想使用 swing、spring 和 hibernate 编写一个 java 应用程序。 我想使用数据绑定(bind)器用 bean 的值填充 gui,并且我还希望它反射(reflect) gui
我有这段代码,当两个蜘蛛完成后,程序仍在运行。 #!C:\Python27\python.exe from twisted.internet import reactor from scrapy.cr
要点是 Spring Batch (v2) 测试框架具有带有 @Autowired 注释的 JobLauncherTestUtils.setJob。我们的测试套件有多个 Job 类提供者。因为这个类不
我是一名优秀的程序员,十分优秀!