我目前正在尝试使用Devise gem创建私有用户配置文件。到目前为止,我已经注册,登录,注销和编辑配置文件功能。问题是当用户登录时,他可以通过输入url users / [username]来查看所有其他用户。我对rails相对较新,所以我仍然在弄清楚如何使用会话。
问题是如何限制用户访问特定于其他用户的网站部分?更好的是,这可以通过Devise gem轻松完成吗?
换句话说,如果我签名是用户约翰。我应该能够看到网站/ users / john(这是我的个人资料),但没有看到网站/ user / greg。
感谢
答案 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)