new*_*ils 8 rest ruby-on-rails restful-authentication
任何想法我会怎么做有一个rails REST Web服务,用户只能获取,放置,发布,删除自己的数据?我使用Devise作为我的用户身份验证gem,但我不确定它是否以RESTful方式处理事情.
我如何确保用户"登录"并可以更改其数据?我是否必须在每个请求中传递某种令牌?
Devise 只会为您提供身份验证。这意味着您可以在一定程度上确定用户已被识别并且是他/她所说的用户。有了这些信息,您就可以使用 Rails 机制或其他 Rails gem(即 CanCan、Aegis、declarative_authorization)来授权用户并定义权限。
before_filter一个简单的方法是在相关控制器上使用 a来确定 a 是否BlogPost属于已登录的用户。
这是我的意思的一个简单例子:
class BlogPostsController < ApplicationController
before_filter :is_user_allowed, :only => [:edit, :delete, :show]
# default Rails generated RESTful methods here
def is_user_allowed
if BlogPost.find(params[:id]).try(:user_id) != current_user.id
redirect_to access_denied_page_path
end
end
end
Run Code Online (Sandbox Code Playgroud)
该is_user_allowed方法检索BlogPost正在查询的用户,并current_user通过比较用户 ID 来确定是否允许该用户执行该操作。如果不等式成立,那么它就会重定向到我们臭名昭著的access_denied_page_path.
有关过滤器的更多信息,请参阅这篇边缘指南文章。
有关可以为您提供此功能(以及更多功能)的 Rails gem 的更多信息,请在 Google 上浏览并搜索rails authorization. 此外,这里有一些 Railscast 应该可以提供一些见解:
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |