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 不就可以判断是否有此权限了?