0
幫我解決這個問題:的Rails的before_filter
我有兩個色器件模型(用戶和管理員)
和我有一些崗位模型和控制器的路線:
/posts
/posts/80
/posts/80/edit
,我想即: 管理員擁有所有訪問 用戶可以訪問:
/post
and
/post/80 (if he is creator of this post)
我做到了這一點:
class PostsController < ApplicationController
before_filter :check_guest_logged_in!, :except => [:index, :show]
.
.
.
private
def check_guest_logged_in!
if user_signed_in?
authenticate_user!
elsif admin_signed_in?
authenticate_admin!
else
redirect_to root_path
end
end
但在這種情況下,如果用戶是授權他可以把瀏覽器
/posts/80/edit
,他獲得的訪問(即使他不是這個職位的創造者)
我怎樣才能解決這一問題?
我想類似的東西 私人
def check_guest_logged_in!
if user_signed_in?
authenticate_user!
if (current_user.id == @post.user.id)
else
return false;
end
elsif admin_signed_in?
authenticate_admin!
else
redirect_to root_path
end
end
,但它不是工作
用了可以可以,我可以這樣做呢? –
與您的代碼最根本的問題是,你如果用戶登錄只檢查,而不是他們是否是這一職位的所有者。你會在你的職位表中需要一個ACCOUNT_ID列,你可以簡單地做一個過濾器前,並檢查CURRENT_USER相同的職位所有者,但康康舞確實是一個更好的選擇,因爲它很容易配置,並保持你的代碼DRY –