我可以在Grape API中使用Devise控制器帮助器方法吗?

时间:2019-02-15 19:42:15

标签: ruby-on-rails devise grape

我有一个基于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方法中使用它?

1 个答案:

答案 0 :(得分:-1)

您尝试过这个宝石吗? grape_devise-https://github.com/justinm/grape_devise

我对使用devise辅助方法有类似的要求,但是我使用devise_token_auth代替了devise进行api身份验证。将此宝石https://github.com/mcordell/grape_devise_token_auth用于设计葡萄终点的助手。

如果已经找到解决方案,请分享答案。