首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Rails中的设计保护操作

用Rails中的设计保护操作
EN

Stack Overflow用户
提问于 2017-01-29 03:39:06
回答 2查看 41关注 0票数 0

如果我有一个像下面这样的控制器,保护我的表演行为的最好方法是什么?当前设置的方式--任何用户都可以使用id查看另一个用户的备注。

代码语言:javascript
复制
class NotesController < ApplicationController
    before_action :authenticate_user!

    def index
        @notes = Note.where(user_id: current_user)
    end

    def show
        @note = Note.find(params[:id])
    end

    def new
        @note = current_user.notes.build
    end

end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-29 04:36:52

方法: 1

代码语言:javascript
复制
def show
   @note = Note.find(params[:id])
   redirect_to anywhere_you_want, notice: "can't see others note" if @note.user != current_user 
end

方法: 2

创建一个before_action,如:

代码语言:javascript
复制
before_action :authenticate_note_user, only: [:show]
private
def authenticate_note_user
   @note = Note.find(params[:id])
   redirect_to anywhere_you_want, notice: "can't see others note" if @note.user != current_user
end
票数 3
EN

Stack Overflow用户

发布于 2017-01-29 11:10:33

身份验证是一回事,但授权现在已经相当another.Right了(如果我对您的理解是正确的),如果有任何用户登录,他们可以查看其他人的凭据等等,您不想这样做。这可以理解。

您将不得不实现CanCanCan -或类似的gem。在大约30-45分钟的时间里,你可以把它定位出来,并为你想要的任何东西设置权限。

https://github.com/CanCanCommunity/cancancan

http://railscasts.com/episodes/192-authorization-with-cancan

请注意,CanCan已经过时,不再维护。

如果您需要CanCanCan的帮助,您可以随时重新发布,但这是非常简单的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41917384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档