Ruby on rails 在http\u basic\u验证\u之后删除会话

Ruby on rails 在http\u basic\u验证\u之后删除会话,ruby-on-rails,Ruby On Rails,我正在学习RubyonRails 我有白色这个代码做一个登录和autenticate编辑后,但我不知道如何做注销,我只能登录,然后我不能做注销,请帮助我 class PostsController < ApplicationController http_basic_authenticate_with :name => 'admin', :password => 'meteoro', :except => [:index, :show] # GET /posts # G

我正在学习RubyonRails

我有白色这个代码做一个登录和autenticate编辑后,但我不知道如何做注销,我只能登录,然后我不能做注销,请帮助我

class PostsController < ApplicationController

http_basic_authenticate_with :name => 'admin', :password => 'meteoro', :except => [:index, :show]
# GET /posts
# GET /posts.json
def index
@posts = Post.all

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @posts }
end
end
class PostsController'admin',:password=>'meteoro',:except=>[:index,:show]
#获取/发布
#GET/posts.json
def索引
@posts=Post.all
回应待办事项|格式|
format.html#index.html.erb
format.json{render json:@posts}
结束
结束

谢谢

HTTP是无状态的,所以它实际上是浏览器(客户端)和服务器的一种约定,使您可以“登录”给定的请求。-重要的一点是,一旦身份验证完成,服务器将以
授权
头响应,浏览器将返回该头。通过执行类似于请求的操作手动清除控制器中的标题。我认为标题['Authorization']=''应该可以工作。

默认情况下,您输入的凭据存储在静态标题中,实际上无法从系统注销


阅读此wikipedia条目

您需要通过强制客户端将请求与另一个请求放在一起,来强制客户端释放
授权
标题

下面是我如何在a/logout视图中使用jQuery ajax调用完成的:

$.ajax({ 
  url : '/empty_200_page', 
  method : 'GET', 
  beforeSend : function(req) { 
    req.setRequestHeader('Authorization', 'nope'); 
  } 
});

您的回答部分正确,没有“从服务器端”的方法,但有一种方法是强制客户端覆盖该授权头-请参阅我的回答Not true!服务器无法通过响应强制执行该操作。Headers我已更正我的回答,以表明需要请求,而不是响应。这是一个关于如何使用ROR完成注销的问题。虽然通过Ajax请求当然是可能的,但这不是一个典型的解决方案。