手動でページを更新するか、このようなリダイレクトを設定すると
}).then(function() {
document.location = "/";
}, function() {
Ember アプリの関数で、Ember コントローラーのプロパティが設定されていません。どのプロパティが設定解除されるかが重要かどうかはわかりませんが、そうなった場合に備えて、コードを次に示します。アプリケーション テンプレートで、ユーザーが認証されているかどうかを確認します
{{#if isAuthenticated}}
blah blah
{{else}}
blah blah
{{/if}}
プロパティは AuthController で設定されます
App.AuthController = Ember.ObjectController.extend({
currentUser: null,
isAuthenticated: Em.computed.notEmpty("currentUser.email"),
login: function(route) {
var me;
me = this;
return $.ajax({
url: "/users/sign_in.json",
type: "POST",
data: {
"user[email]": route.currentModel.email,
"user[password]": route.currentModel.password
},
success: function(data) {
me.set('currentUser', data.user);
そのため、ページを更新した後、私の currentUser は (Ember によると) 認証済みとして表示されなくなりました。ただし、(Ruby on Rails) サーバー側では、ユーザーは引き続き認証されます。チェックするためにこのコードをレイアウトに配置すると、Ember が (ページの更新により) 私がサインアウトしたと判断した後も、私のサーバー コードは私がサインインしていることを伝えています (実際には私はサインインしています)。
<% if current_user %>
there is a current user
<% end %>
なぜこれが起こっているのか説明できますか?