我的后台权限是基于 devise 做的,现在有一个 bug 是这样的: 有一个修改管理员信息的功能,当我提交完某个管理员的信息时, 并没有到展示管理员的页面,而是到重新登录的页面。。。。。 这时候是不是要在执行 update 的时候做一个操作,不让操作修改的管理员重新执行登录操作。 求大神指点。。。。
不修改密码是不会跳转到重新登陆页面的吧
#1 楼 @a4652097 没有修改密码,改了其它属性也是重新登录了。。。。。
这里应该是解决方案,就是增加一个 sign_in 动作 http://stackoverflow.com/questions/4264750/devise-logging-out-automatically-after-password-change
#3 楼 @ken 两种方式都试了貌似还是不行啊,,,,
def update @page_title = "修改管理员信息" @staffer = Admin::Staffer.find(params[:id]) #(1)sign_in(current_admin_staffer, :bypass => true) #(2) #sign_out(current_admin_staffer) #sign_in(:id, current_admin_staffer, :bypass => true) if @staffer.update(admin_staffer_params) redirect_to admin_staffers_path, notice: "修改成功" else render :action => :edit end end
我觉得应该把 sign_in 放在 update 后面
#5 楼 @ken 依然不行。。。。。醉了!
你这个 update 所在的 controller 第一行应该有before_filter :authenticate_user 并且你应该看下你的 current_user 里面存储的是什么?
before_filter :authenticate_user