使用Devise创建私有配置文件

时间:2011-09-18 00:22:55

标签: ruby-on-rails devise authorization

我目前正在尝试使用Devise gem创建私有用户配置文件。到目前为止,我已经注册,登录,注销和编辑配置文件功能。问题是当用户登录时,他可以通过输入url users / [username]来查看所有其他用户。我对rails相对较新,所以我仍然在弄清楚如何使用会话。

问题是如何限制用户访问特定于其他用户的网站部分?更好的是,这可以通过Devise gem轻松完成吗?

换句话说,如果我签名是用户约翰。我应该能够看到网站/ users / john(这是我的个人资料),但没有看到网站/ user / greg。

感谢

2 个答案:

答案 0 :(得分:4)

Devise不会这样做,但CanCan会像有人提到的那样。 CanCan对于初学者来说可能有点重,只是为了做你想做的事情。您需要做的就是添加一个before_filter来检查用户是谁。

例如:

class UserProfilesController < ApplicationController

  before_filter :verify_owner

  def show
    @user_profile = current_user.user_profile
    # or maybe this way, not sure how you have your relations set up
    # @user_profile = UserProfile.where(:user => current_user)
  end

private

  def verify_owner
    # assume the route looks like this  /user/:username
    redirect_to root_url unless current_user.username == params[:username]
  end    

end

答案 1 :(得分:1)

使用CanCan来帮助授权。 <{3}} + Devise没有别的!

开始使用CanCan