首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

web里的当前用户。先多谢

2012-02-28 
web里的当前用户。先谢谢用了restful-authentication插件,里面有个当前用户(current_user)。但登录后任何任

web里的当前用户。先谢谢
用了restful-authentication插件,里面有个当前用户(current_user)。但登录后任何任何人都可以更改某人的blog,视图里加了验证达到不显示的效果不行,因为可以通过地址栏输入。如:users/aaaaaa/blogs/10/edit,这样任何用户就可以修改用户aaaaaa的博客了。所以想在全局下加一个前置过滤,这样就可以在任何模块(不止博客和论坛和别的)来增加过滤了。但是在application里怎么来判断当前用户是不是当前文章的作者呢?
急求,谢谢!有用过这个擦件的,插件里是不是已经提供了这个方法呢?有的话给说一下,我是没看出来!下面是我看到一个可以的,但不明白啥意思!麻烦给说一下
def find_user
  if @user = User.active.find(params[:user_id] || params[:id])
  @is_current_user = (@user && @user.eql?(current_user))
  unless logged_in? || @user.profile_public?
  flash[:error] = :this_users_profile_is_not_public_youll_need_to_create_an_account_and_log_in_to_access_it.l
  redirect_to :controller => 'sessions', :action => 'new'  
  end
  return @user
  else
  flash[:error] = :please_log_in.l
  redirect_to :controller => 'sessions', :action => 'new'
  return false
  end
  end

[解决办法]
你要先从逻辑思路上搞清关系。当前用户一般是存在session里,可以存的是一个id和别的。然后访问某一个action时,首先before_filter ,你可以写在 application_controller 里,比如:

before_filter :auth_for_current_user

def auth_for_current_user
return false unless session[:member_id] == @current_user.id
blog = Blog.find_by_owner_id(session[:member_id])
if blog
return true
else
something
...
end
end
[解决办法]
你访问某个blog时,这个blog记录肯定有记录创建者是谁的吧。 然后再根据此创建者是不是session中的用户id 不就可以判断是否有此权限了?

热点排行