2016-05-04 10 views
0

/loginページからログインした後、Sails.jsアプリケーションを/dashbaordにリダイレクトしています。リダイレクトはすでにSailsにログインしています

私が望むのは、既にログインしているユーザー/dashboardに自動的にリダイレクトされ、ホームページや他のページにアクセスしようとすることです。

どのように私はセイルズでそれを達成できますか?

答えて

1

私は、Ron SmithとBonanzaのおかげで欲しいものを達成しました。何らかの理由req.session.authenticatedについては

ルートからポリシーを呼び出すときに、ここで、undefinedだった私のapi/policies/forceDashboard.jsです:ボナンザは私を助言として

module.exports = function(req, res, next) { 
    if (req.user) { 
     return res.redirect('/dashboard'); 
    } 

    return next(); 
}; 

その後、私はconfig/routes.js内のルートにポリシーを追加しました:

'/': [ 
    { policy: 'forceDashboard' }, 
    { view: 'homepage' } 
], 

'get /login': [ 
    { policy: 'forceDashboard' }, 
    { view: 'login' } 
] 
1

私が考えることができる最も簡単な方法は、ポリシーを作成し、このポリシーをすべての関連するコントローラとアクションに適用することです。可能な例:

// api/policies/forceDashboard.js 
module.exports = function(req, res, next) { 
    if (req.session.authenticated) { 
    return res.redirect('/dashboard'); 
    } 

    return next(); 
}; 

// config/policies.js 

module.exports.policies = { 
    '*': 'forceDashboard', 

    'DashboardController': { 
    'find': 'sessionAuth', 
    '*': 'forceDashboard' 
    } 
}; 
+0

これは動作していないようです...実際には、ユーザーが認証されていない場合は '/ login'に、認証されていない場合は'/dashboard 'にリダイレクトされる' isAuthenticated 'ポリシーがあります。 私は以下のポリシーを持っています: '*':['isAuthenticated']しかし '/'や '/ login'のような静的なページをロードするときには起動しません。 – Bertrand

+0

@ Bertrand31しかし、あなたはこれらのページを '' '/' ''と '' ''/login'''用に持っていますか?はいの場合は、これらのポリシーを追加するだけで問題ありません。 – Bonanza

+0

私は '/'のコントローラーを持っていませんし、 '/ login'のコントローラーはデータをポストするときにだけトリガーされます。どちらも静的なページなので、コントローラは必要ありません。 コントローラをページに追加する必要があるのでしょうか?そこに清潔な方法はありませんか? – Bertrand

関連する問題