- ベストアンサー
ログインしないとダウンロード出来なくしたい
お世話になります、よろしくお願いします。 現在、ASP.NET(VB)、PostgresでWebシステムを開発しています。 ログイン後、DBからのデータをCSV形式で生成してダウンロードさせています。 このダウンロードで生成されたファイルがそのままサーバー上に残っていて、フルパスでファイルを指定すると、ログインしなくてもファイルがダウンロード出来てしまいます。 対処法として 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する このどちらかでやれるのではないかと考えているのですが、行き詰ってしまいました。どうかご教授下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
CSVファイルを作るのではなく、aspxからレスポンスすればよい。 http://www.ailight.jp/ASPDownload.aspx
その他の回答 (3)
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 一般的には、 No.1 の todo36 さんが書かれているように Response を操作して CSV ファイルを落とさせる方法がよいと思います。 上記を踏まえたうえで、一般的な方法を書きますと、 1. ログイン画面 認証したら、session にユーザーの 情報を保持するクラスのインスタンス等 を格納。 2. CSV ダウンロード画面 session 上に session にユーザーの 情報を保持するクラスのインスタンス等 が無い場合は、セッションエラー画面か、 ログイン画面へ強制的に遷移させる。 参考になるか解りませんが、 以下のページでの例でも、 Response オブジェクトに対して操作しています。 http://naoko.wankuma.com/designpatterns/designpatterns_0007_builder.html
お礼
回答ありがとうございます。 >Response を操作して CSV ファイルを落とさせる方法 この方法を使い、サーバーにファイルを作ることなくCSVファイルをダウンロードさせることが出来ました。 ユーザー情報をsessionに保持させて、ユーザー情報が無い場合はセッションエラー画面へ強制遷移するようにしています。 ありがとうございました。
- kokorone
- ベストアンサー率38% (417/1093)
私も、WEBシステムの開発・担当をしております。但し、言語など 違うため、詳細まではわかりませんが、アドバイスのみです。 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する どちらも、必要です。 1はセキュリティ面から、誰でも御社のDBの情報が利用できてしまっては、困りますよね。 2は、後から直接ファイルアクセスを禁止することと、サーバーのファイルスペース節約のため、ダウンロード処理後、ファイルは消しましょう。
お礼
回答ありがとうございます。 >どちらも、必要です。 仰るとおりですね。 CSVファイルをサーバーに生成することなく、クライアントがダウンロード可能となったので 1の場合ファイルが存在しないためダウンロード不能 2も条件を満たすことができました。 これからもアドバイスよろしくお願いします。
- fallen_angel
- ベストアンサー率12% (287/2339)
『ログインしなくてもファイルがダウンロード出来てしまいます。』これは、データをサーバの共通フォルダに置き、共通フォルダがクライアントのネットワークで見える形で公開しているのでしょうか? 一例として: (1)ポータルへのログインで認証する。 (2)データ格納先は非公開。 (3)ログイン後WEBページからダウンロード。
お礼
回答ありがとうございます。 No.1様のアドバイスにより、無事解決致しました >データをサーバの共通フォルダに置き データとは生成されたCSVファイルのことでしょうか? CSVファイルの格納先は公開されているので、フルパスさえ知っていれば誰でもファイルにアクセスできる状態でした。
お礼
返信が遅くなり申し訳ありません。 ずばり、用件を満たすことが出来ました!本当にありがとうございます! #開発初期の段階でその参考URLは見ていたのですが、良く分かっていなかったみたいです。。。