我需要实现一个"记住我"我的申请中的功能。 我正在使用内置的设计验证器,并将以下内容作为我的会话存储:
// app/session-stores/application.js
import CookieStore from 'ember-simple-auth/session-stores/cookie';
export default CookieStore.extend({
cookieName: 'myapp-session-cookie'
});
我有一个login-form
组件,其中包含以下内容:
rememberMe: false,
setExpirationTime() {
const expirationTime = this.get('rememberMe') ? (14 * 24 * 60 * 60) : null;
this.set('session.store.cookieExpirationTime', expirationTime);
},
actions: {
authenticateWithDevise() {
this.setExpirationTime();
let { identification, password } = this.getProperties('identification', 'password');
this.get('session').authenticate('authenticator:devise', identification, password).then(() => {
this.sendAction('onLoggedIn');
}).catch((reason) => {
this.set('errorMessage', reason.errors[0]);
});
}
}
当然在相应的模板中我有:
<form role="form" {{action "authenticateWithDevise" on="submit"}}>
{{input type="email" value=identification placeholder="Email" class="icon-email"}}
{{input type="password" value=password placeholder="Password" class="icon-lock"}}
{{input id='remember_me' type='checkbox' checked=rememberMe}}
</form>
无论是cookieExpirationTime
设置还是null
,会话都不会被记住。
我的问题是:我是否还应该在服务器端实现其他功能?我目前正在使用设计rememberable
。此外,我尝试在这里和github上搜索,但只能找到过时的对话和代码,如下所示:
https://github.com/simplabs/ember-simple-auth/pull/451
有人可以解释一下吗?谢谢!