我有一个rails应用程序,我正在使用设计进行身份验证。 当我成功登录网址http://localhost:5000/时, 我尝试在同一浏览器中访问http://127.0.0.1:5000/。 我希望在http://127.0.0.1:5000/上访问它后立即登录,但应用程序仍然会被注销。发生了什么我真的无法理解,因为我试图在同一个浏览器中访问这两个URL?
更新:
我的config / initializers / session_store.rb
Rails.application.config.session_store :cache_store, key: '_app'
答案 0 :(得分:4)
您已登录的事实存储在session
中,该cookie
存储在localhost
中。出于安全原因,浏览器仅将cookie发送到设置cookie的URL。
从浏览器的角度来看,127.0.0.1
和localhost
是完全不同的网址。因此,127.0.0.1
上存储在cookie中的登录信息不会发送到127.0.0.1
运行的服务器,因此localhost
运行的服务器没有关于cache_store
上现有会话的信息}。
更新:
使用img=cv2.imread('whatever.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges=cv2.Canny(gray,50,150,apertureSize=3)
lines=cv2.HoughLines(gray,1,np.pi/180,200)
for rho,theta in lines[0]:
a=np.cos(theta)
b=np.sin(theta)
x0=a*rho
y0=b*rho
x1=int(x0+1000*(-b))
y1=int(y0+1000*(a))
x2=int(x0-1000*(-b))
y2=int(y0-1000*(a))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imwrite('somthing.jpg',img)
存储会话不会改变任何内容,因为缓存存储中的会话属于用户的信息仍存储在cookie中。
您的服务器需要在某处存储所有生成的会话的映像。如果用户回来,服务器需要知道哪个会话属于用户。此问题的简化解决方案可能是为每个会话分配一个随机数,并为用户提供此编号(存储在cookie中)。当用户返回时,也会返回cookie,并允许服务器按该号码加载会话。
并且cookie绑定到域。这是浏览器的安全功能。如果它没有那样工作,那么所有会话都会被发送到所有域:Google会知道你是否登录到Facebook,每个网站都知道你的银行有一个cookie ......