我正在处理Rails 4.2
应用程序并使用devise
gem进行身份验证。
对于remember_me
功能,设计会生成一个Cookie remember_user_token
,在sign_out
之后会被破坏。
有没有办法Devise
不应该销毁remember_user_token
?
我尝试在false
config
initializer
下面config.expire_all_remember_me_on_sign_out = false
var app = Marionette.Application.extend({
initialize: function(options) {
console.log('My container:', options.container);
}
});
var app = new app({container: '#app'});
//router
var MyRouter = Marionette.AppRouter.extend({
appRoutes: {
"some/route": "someMethod"
},
routes : {
"some/otherRoute" : "someOtherMethod"
},
someOtherMethod : function(){
// do something here.
}
});
但它没有帮助。
我在注销后需要该cookie,以便填充登录表单。
请帮忙。
由于
答案 0 :(得分:1)
将表单预填充与身份验证耦合并不是一个好主意。成功登录后,您可以将登录信息存储在cookie中。您可以覆盖create
中的SessionsController
方法,致电super
以致电Devise::SessionsController#create
并将其传递给您。该块将在成功登录后执行,并将接收用户作为参数。
class SessionsController < Devise::SessionsController
def create
super do |user|
cookies[:login] = user.login
end
end
end
答案 1 :(得分:-1)
这是cookie商店的低端产品。首先,cookie中的所有内容一旦设置就会永久存在,或者直到用户以某种方式手动删除cookie。这意味着,如果您设置了user_id和user_group_id,那么在更新或删除之前,它会在cookie中存在。这与会话不同,因为会话就像是计算机上的ram,一旦浏览器关闭,会话就会关闭它以及所有数据。
因此,这意味着当您注销用户时,您需要指定他们的Cookie会清空您不想拥有的任何内容。当您的用户登录时,您可以设置您希望用户在登录时拥有的任何内容。因此,由于会话和cookie完全是分开的,因此除非您选择制作它们,否则它们永远不会互动。因此,除非您这样做,否则您的会话永远不会将其自身转储到cookie商店中。
每次用户访问您的网站时,您都可以进行一次握手,确保Cookie在必要时与数据库匹配。否则,您可能会有不同的数据,只有在登录时更新或者没有握手的情况下,用户必须继续登录以确保它们仍然有效,这首先违背了cookie的目的。< / p>
客户端cookie存储的缺点是安全问题。根据您使用cookie存储数据的方式,一个人可能会劫持您网站上的某些cookie,并假装他们就是这些cookie。这可以通过精心设计来避免,但只是假设您的cookie商店中的任何内容都是公平的游戏,所以请小心使用它,并且只使用非秘密数据。
希望这有帮助!