ブラウザの更新 (F5) で失われないように、ユーザーの認証情報を Cookie に保存したいと考えています。
ユーザーがログオン時に「Remember Me」チェックボックスを選択した場合に備えて、認証情報を「permanent-cookie」に保存します。
8 に答える
ngCookies
これは、モジュールを使用して angular の 1.4.0 ビルドで可能です。
https://docs.angularjs.org/api/ngCookies/service/$cookies
angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
// Find tomorrow's date.
var expireDate = new Date();
expireDate.setDate(expireDate.getDate() + 1);
// Setting a cookie
$cookies.put('myFavorite', 'oatmeal', {'expires': expireDate});
}]);
1.4 の場合: ここのコメントと以下の他のコメントに記載されているように、1.4 の時点で、Angular のネイティブ cookie サポートにより、cookie を編集する機能が提供されるようになりました。
38fbe3ee により、$cookies は現在のブラウザー Cookie 値を表すプロパティを公開しなくなります。$cookies は、Cookie への変更についてブラウザーをポーリングしなくなり、Cookie の値を $cookies オブジェクトにコピーしなくなりました。
これは、ポーリングが高価であり、$cookies プロパティが実際のブラウザーの Cookie 値と正しく同期されないという問題を引き起こしたため、変更されました (ポーリングが最初に追加された理由は、異なるタブ間の通信を可能にすることでしたが、今日これを行うためのより良い方法があります) 、たとえば localStorage など)。
$cookies の新しい API は次のとおりです。
get put getObject putObject getAll remove Cookie データにアクセスするには、上記のメソッドを明示的に使用する必要があります。これは、ブラウザーの Cookie で発生した変更を検出するために $cookies のプロパティを監視できなくなったことも意味します。
通常、この機能は、サード パーティのライブラリが実行時にプログラムで Cookie を変更していた場合にのみ必要です。これに依存する場合は、サードパーティのライブラリに反応して Cookie を変更するコードを記述するか、独自のポーリング メカニズムを実装する必要があります。
実際の実装は、呼び出しを介して渡すことができる$cookiesProviderput
オブジェクトを介して行われます。
1.3 以下の場合: jQuery プラグインをロードする必要を回避するために最善を尽くした場合、これは angular の優れた代替品と思われます - https://github.com/ivpusic/angular-cookie
Cookie の有効期間が長くなることを知っている人もいるので、追加の例を示したいと思います。すなわち。Cookie の有効期間を 10 分、または 1 日延長したいと考えています。
通常、Cookie が何秒間存続するかは既にわかっています。
var today = new Date();
var expiresValue = new Date(today);
//Set 'expires' option in 1 minute
expiresValue.setMinutes(today.getMinutes() + 1);
//Set 'expires' option in 2 hours
expiresValue.setMinutes(today.getMinutes() + 120);
//Set 'expires' option in (60 x 60) seconds = 1 hour
expiresValue.setSeconds(today.getSeconds() + 3600);
//Set 'expires' option in (12 x 60 x 60) = 43200 seconds = 12 hours
expiresValue.setSeconds(today.getSeconds() + 43200);
$cookies.putObject('myCookiesName', 'myCookiesValue', {'expires' : expiresValue});
通常どおり取得できます。
var myCookiesValue = $cookies.getObject('myCookiesName');
空の場合は undefined を返します。
リンク;
http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $cookiesProvider#defaults
angular.js スクリプトに移動し、挿入 Cookie
検索をself.cookies = function(name, value) {
変更してから、たとえば 7 日間 Cookie を追加するコードを変更できます。
if (value === undefined) {
rawDocument.cookie = escape(name) + "=;path=" + cookiePath +
";expires=Thu, 01 Jan 1970 00:00:00 GMT";
} else {
if (isString(value)) {
var now = new Date();
var time = now.getTime();
time += 24*60*60*1000*7;
now.setTime(time);
cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +
';path=' + cookiePath+";expires="+now.toGMTString()).length + 1
@vincent-brigliaが指摘したよう$cookie
に、サービスが構成可能になるまで回避策として使用できる jQuery ドロップインがあります -ここで確認してください