解决,锁帖
#16 楼 @help5305fff 第一次做 WEB,经验不足,,还请海涵
既然 before_filter 已经被弱化,为什么还要写两个 before_filter? 直接
def find_user
if !session[:user_id]
return
end
@user = User.find_by_id(session[:user_id])
if !@user
redirect_to(:controller=>"welcome",:action => "index")
end
end
然后在具体的 ACTION 函数里,判断
def common_event_content
#公共部分
@event_id = params[:id]
@event_contents = CommonEventContent.where(["event_id=?", @event_id]).order('id desc').page(params[:page]).per(10)
if !@user
return
end
#需要登陆部分
end
#14 楼 @help5305fff #13 楼 @cxh116 #11 楼 @zzhattzzh 先谢谢大家。 如果两个 before_filter,是不是相当 before_filter 权限被弱化了?
比如以前这些 ACTION 只有登陆才能用,直接在 before_filter 里寻找 USER,如果没有就回首页,这样 before_filter 起到一个权限判断作用;
现在这些 ACTION 登陆和不登陆都可以做,那具体的权限只能到具体的 ACTION 函数里面判断。比如在 ACTION 里取到@user 信息做一些判断什么的。现在则要在 ACTION 里面判断是否有这个@user ,然后做对应的事情。
#6 楼 @help5305fff 不登陆是说,他可以浏览这个页面内容;如果他登陆了,这个页面就要显示他的用户信息,还可以发帖什么的。所以有个 before_filter 里的 find_user。
#3 楼 @help5305fff 问题是有些是登陆和不登陆都可以的,放哪儿?写两份吗?
#11 楼 @chinacheng 主要是有个字段被虚拟了。。见我 10 楼回复
#9 楼 @Rei 是这样: 用了 gem 'bcrypt-ruby',在数据库里是 passward_digest 这个字段保存加密后的密码。
代码里, password_field :password password_field :password_confirmation 这两个用来确认密码是否一致
在 model 里, #密码 (password) validates_presence_of :password, :on => :create, :message => "密码不能为空" validates_length_of :password, :on => :create, :in => 6..15, :message => "密码长度在 6-15"
has_secure_password #确认两次是否一样 validates_presence_of :password,:on => :create, :message => "两次输入密码不一致"
可能就是你在前几楼说的,password 内部不让为空了。
#6 楼 @Rei 应该是这个问题,我现在设置了 :on => :create .那要是哪天有密码重新设置功能了,那这步校验不是又错过了。。 #4 楼 @chinacheng
我有用了 gem 'bcrypt-ruby' 这个包,password 是个虚拟的字段,数据库里对的是 passward_digest.. 但是我没更新密码这个字段啊??
可以啊,直接放到 assets 中就能用了。
应该是 IP 解析问题。。
提示没这个变量。。
另存为无 bom 头的 utf-8,可以了。。不过这回是 chrome 出问题了。。多谢