2016-11-18 42 views
0

我使用Rails应用程序,设置葡萄,并试图所有端点进行身份验证。所以尝试葡萄代币验证https://github.com/mcordell/grape_token_auth和安装在github文档中告诉。这些是我的配置。葡萄令牌身份验证“错误”:“404 API版本未找到”

初始化/ gta.rb

GrapeTokenAuth.setup! do |config| 
    config.mappings = { user: User } 
    config.secret = 'aaa' 
end 

对于API,这是文件夹结构

app/api/tmo/api.rb -> mounted two version root file 
app/api/tmo/vl/root.rb -> mounted all the other files for v1 
app/api/tmo/vl/restaurants.rb -> here lies the mount authentication 

include GrapeTokenAuth::MountHelpers 
include GrapeTokenAuth::TokenAuthentication 
mount_registration(to: '/auth', for: :user) 
mount_sessions(to: '/auth', for: :user) 
mount_token_validation(to: '/auth', for: :user) 
mount_confirmation(to: '/auth', for: :user) 

所以我的路线是一样

Running via Spring preloader in process 9309 
POST  /auth/api/v1(/.:format) 
DELETE  /auth/api/v1(/.:format) 
PUT  /auth/api/v1(/.:format) 
POST  /auth/api/v1/sign_in(.:format) 
DELETE  /auth/api/v1/sign_out(.:format) 
GET  /auth/api/v1/validate_token(.:format) 
GET  /auth/confirmation/api/v1(/.:format) 
GET  /api/v1/statuses/public_timeline(.:format) 

当我访问/ API/V1 /状态/ public_timeline它说401未经授权,所以authenticate_user!方法工作

但是当我发布到/认证/ API/V1,我收到以下错误

{ 
    "error": "404 API Version Not Found" 
} 

如何检查其中的错误正在发生或我怎么解决这个问题?

回答

0

我试图建立grape_token_auth有完全相同的问题。我解决它通过执行以下操作:

namespace :auth do 
    mount_registration(to: '/', for: :user) 
    mount_sessions(to: '/', for: :user) 
    mount_token_validation(to: '/', for: :user) 
    mount_confirmation(to: '/ ', for: :user) 
end 

在这种情况下,您可以拨打v1/auth/sign_out例如,应该工作。没有命名空间,您可以直接以这种方式调用端点:v1/sign_out

不知道是否有意或是否有葡萄API的变化,但使用的to: '/auth'默认的配置将会为AUTH端点根本改变/auth,这意味着你将不得不调用端点像/auth/v1/sign_out并提供version通过其他方式葡萄,所以它不会抱怨。

最初发布于https://github.com/mcordell/grape_token_auth/issues/52#issuecomment-277449284