/login
ページからログインした後、Sails.jsアプリケーションを/dashbaord
にリダイレクトしています。リダイレクトはすでにSailsにログインしています
私が望むのは、既にログインしているユーザー/dashboard
に自動的にリダイレクトされ、ホームページや他のページにアクセスしようとすることです。
どのように私はセイルズでそれを達成できますか?
/login
ページからログインした後、Sails.jsアプリケーションを/dashbaord
にリダイレクトしています。リダイレクトはすでにSailsにログインしています
私が望むのは、既にログインしているユーザー/dashboard
に自動的にリダイレクトされ、ホームページや他のページにアクセスしようとすることです。
どのように私はセイルズでそれを達成できますか?
私は、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' }
]
私が考えることができる最も簡単な方法は、ポリシーを作成し、このポリシーをすべての関連するコントローラとアクションに適用することです。可能な例:
// 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'
}
};
これは動作していないようです...実際には、ユーザーが認証されていない場合は '/ login'に、認証されていない場合は'/dashboard 'にリダイレクトされる' isAuthenticated 'ポリシーがあります。 私は以下のポリシーを持っています: '*':['isAuthenticated']しかし '/'や '/ login'のような静的なページをロードするときには起動しません。 – Bertrand
@ Bertrand31しかし、あなたはこれらのページを '' '/' ''と '' ''/login'''用に持っていますか?はいの場合は、これらのポリシーを追加するだけで問題ありません。 – Bonanza
私は '/'のコントローラーを持っていませんし、 '/ login'のコントローラーはデータをポストするときにだけトリガーされます。どちらも静的なページなので、コントローラは必要ありません。 コントローラをページに追加する必要があるのでしょうか?そこに清潔な方法はありませんか? – Bertrand