時間を割いて質問していただきありがとうございます。この本のその部分については、もっと明確に説明できたはずだと確信しています。確かに、第 14 章に費やした時間は思ったほど多くありませんでしたが、次の版でそれを改善しようと思います。あなたのようなフィードバックは、どこを改善する必要があるかを知る上で非常に貴重なので、感謝しています.
とにかく、バッファをファイルに書き込むことは、第8章で言及されたものです(また、ここで再び言及される可能性があります... 325ページですが、IBufferについては明示的に言及されていません)。以下に示すように、Windows.Storage.FileIO クラスを使用した簡単な作業です (約束です!)。
まず、明確化。入力した資格情報を保存するには、2 つの方法があります。プレーンテキストの資格情報を保存する場合は、資格情報ロッカーを絶対に使用してください。ここでの利点は、ローミング パスワードが PC 設定で有効になっている場合 (既定では)、これらの資格情報がユーザーと共に自動的にローミングできることです。それ以外の場合は、不透明な CredentialPickerResults.credential プロパティをファイルに直接保存できます。すでに暗号化およびスクランブルされているため、その場合は資格情報ロッカーを使用する必要はありません。
ここで、IBuffer である資格情報プロパティを保存/読み込みます。これには、FileIO.writeBufferAsync を使用して保存し、FileIO.readBufferAsync を使用して再ロードします。
これを示すために、資格情報ピッカーのサンプル、シナリオ 3 を変更しました。資格情報プロパティを保存するために、pickAsync の完成したハンドラーの最後に次のコードを追加しました。
//results.credential will be null if the user cancels
if (results.credential != null) {
//Having retrieved a credential, write the opaque buffer to a file
var option = Windows.Storage.CreationCollisionOption.replaceExisting;
Windows.Storage.ApplicationData.current.localFolder.createFileAsync("credbuffer.dat", option).then(function (file) {
return Windows.Storage.FileIO.writeBufferAsync(file, results.credential);
}).done(function () {
//No results for this operation
console.log("credbuffer.dat written.");
}, function (e) {
console.log("Could not create credbuffer.dat file.");
});
}
次に、可能であれば、その資格情報をロードする新しい関数を作成しました。これは、launchCredPicker の代わりに Launch ボタンのクリックで呼び出されます。
//In the page ready method:
document.getElementById("button1").addEventListener("click", readPrevCredentialAndLaunch, false);
//Added
function readPrevCredentialAndLaunch() {
Windows.Storage.ApplicationData.current.localFolder.getFileAsync("credbuffer.dat").then(function (file) {
return Windows.Storage.FileIO.readBufferAsync(file);
}).done(function (buffer) {
console.log("Read from credbuffer.dat");
launchCredPicker(buffer);
}, function (e) {
console.log("Could not reopen credbuffer.dat; launching default");
launchCredPicker(null);
});
}
//Modified to take a buffer
function launchCredPicker(prevCredBuffer) {
try {
var options = new Windows.Security.Credentials.UI.CredentialPickerOptions();
//Other options omitted
if (prevCredBuffer != null) {
options.previousCredential = prevCredBuffer;
}
//...
それでおしまい。修正した JS サンプルをhttp://www.kraigbrockschmidt.com/src/CredentialPickerJS_modified.zipに置きました。
クレイグ
HTML、CSS、および JavaScript による Windows 8 アプリのプログラミングの著者(無料の電子ブック)