2012-04-22 54 views
1

我正在努力向我正在构建的应用程序添加授权,并且我有一个问题。我已将一个:admin列添加到我的用户表并将其设置为布尔值。在我的控制器我加入这个代码:与我的例子相比,为什么使用授权库会更好?

class ShipsController < ApplicationController 

    def index 
    ships = Ship.all 
    @ships = ships.sort_by { |v| [v[:empire_image], v[:cost]] } 
    if current_user.admin == true 
     respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @ships } 
     end 
    else 
     respond_to do |format| 
     format.html { redirect_to root_path } 
     end 
    end 
    end 

它看起来像我将不得不把它添加到我的所有操作,这似乎是错误的。我的问题是,这样做是不安全的或只是更多的工作,但我很好。

另外我正在使用来自railstutorial.org的身份验证,并且想知道像cancan这样的库是否可以很好地工作。

感谢您的时间, 尼克

回答

1

这种方式是不是不安全的,它只是杂波你的控制器,至少要考虑使用的before_filter授权你的行动。

也许一个简单的应用程序中使用第三方授权的宝石可以似乎矫枉过正,但移动授权规则在一个地方是一件非常好的事情(在ability.rb文件中惨惨的情况下)。

您可以使用CanCan和该认证系统,CanCan只需要在控制器中存在current_user方法。

+1

感谢Aldo,感谢回应。我最终用康康去了,而且工作起来非常容易。 – 2012-04-23 16:15:48

+0

不客气!使用CanCan的一个很好的观点是文档,如果你发现问题,我建议你阅读它。顺便说一句,这个宝石看起来非常灵活,可能你在开始时不会使用所有这些功能,但稍后它可能会很方便。 – 2012-04-23 17:06:47

相关问题