2017-01-05 52 views
0

シングルトン辞書コレクションを使用してユーザーのコレクションを格納しています。そのため、ユーザーはGUIDを使用してapiにアクセスしてクレジットカードの詳細にアクセスできます。ASP.NETコアアプリケーションに一時的にデータを保存する

シングルトン辞書コレクションを使用するのではなく、データをより安全に保管する方法はありますか?それは一時的な記憶域のためのものであり、データベースは関与していません。

+0

TBH、私はこのスタイルはPCIに準拠しているとは思わない。あなたですか?しかし、移動すると、あなたは本当にそのルートや地獄に行く場合は、そのjsonの "設定"の上に認可ルールを適用する場合でも、この "ユーザーデータ"と一時的なjsonファイルを使用してサービスを介してアクセスすることができます...しかし、しないでください:-) –

答えて

0

アプリケーションを再起動するとどうなりますか?それ以降はデータを失いませんか?もしあなたのリストがハードコーディングされていなければ、私はコレクションに何も問題はないと思う。しかし、各アプリの再起動後にデータが失われ、もう一度やり直す必要がある場合は、https://redis.io/のようにユーザーコレクションをキャッシュできます。アプリケーションを再起動すると、収集データが失われることはありません。

1

クレジットカードの詳細については、私はおそらく王国への鍵となる単一のGUIDに疑問を呈するでしょう。

しかし、疑問は、一般的な一時的なストレージの詳細です。

メモリの記憶容量は問題ありませんが、2つの問題が発生します。

  1. アプリを再起動すると、キャッシュは "失われています"。
  2. キャッシュが1つのアプリケーション用であるため、水平方向に縮尺することはできません。あなたのサーバープール内の他のマシンは、独自のキャッシュを構築する必要があります(そして、あなたは気にする粘着セッションのようなものがあります)。

確かに良い選択肢はRedisです。 Windows上にいると仮定してredis from hereをダウンロードしてインストールする必要があります。明らかにAzure Redisのようなものを使うことができます。そしてコードのために、幸いにもマイクロソフトはあなたのためにほとんどの作業を行っています。主にこの投稿から取った:http://dotnetcoretutorials.com/2017/01/06/using-redis-cache-net-core/

このパッケージを.netコアアプリケーションにインストールします。

Install-Package Microsoft.Extensions.Caching.Redis 

startup.csのconfigure servicesメソッドで、Redisをキャッシュサービスとして追加する必要があります。あなたはそうそうする:

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc(); 

    services.AddDistributedRedisCache(option => 
    { 
     option.Configuration = "127.0.0.1"; 
     option.InstanceName = "master"; 
    }); 
} 

あなたのコントローラ/サービスでIDistributedCacheを要求することができます。次のようなもの:

関連する問題