我有一个基于grape的API,该客户端的唯一客户端是基于浏览器的用户,这些用户已经通过Devise向我的应用进行了身份验证。我希望能够利用一些<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>homeproject</groupId>
<artifactId>mytestproject</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<serenity.version>1.9.31</serenity.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.serenity-bdd/serenity-core -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>1.9.31</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.serenity-bdd/serenity-junit -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>1.9.31</version>
</dependency>
</dependencies>
</project>
之类的控制器控制器助手方法,并且在没有当前经过身份验证的用户的情况下返回403。有合理的方法吗?
我天真地尝试仅导入控制器帮助器方法:
current_user
class API < Grape::API
prefix 'api'
format :json
include Devise::Controllers::Helpers
get 'hello' do
# would like to be able to use current_user here
{ result: 'hello' }
end
end
和其他辅助方法仍然不可用,并抛出current_user
。
有没有办法利用devise已在此处完成的身份验证并在我的grape api方法中使用它?
答案 0 :(得分:-1)
您尝试过这个宝石吗? grape_devise-https://github.com/justinm/grape_devise
我对使用devise辅助方法有类似的要求,但是我使用devise_token_auth代替了devise进行api身份验证。将此宝石https://github.com/mcordell/grape_devise_token_auth用于设计葡萄终点的助手。
如果已经找到解决方案,请分享答案。