• ベストアンサー

ログインしないとダウンロード出来なくしたい

お世話になります、よろしくお願いします。 現在、ASP.NET(VB)、PostgresでWebシステムを開発しています。 ログイン後、DBからのデータをCSV形式で生成してダウンロードさせています。 このダウンロードで生成されたファイルがそのままサーバー上に残っていて、フルパスでファイルを指定すると、ログインしなくてもファイルがダウンロード出来てしまいます。 対処法として 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する このどちらかでやれるのではないかと考えているのですが、行き詰ってしまいました。どうかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

CSVファイルを作るのではなく、aspxからレスポンスすればよい。 http://www.ailight.jp/ASPDownload.aspx

radakatu
質問者

お礼

返信が遅くなり申し訳ありません。 ずばり、用件を満たすことが出来ました!本当にありがとうございます! #開発初期の段階でその参考URLは見ていたのですが、良く分かっていなかったみたいです。。。

その他の回答 (3)

回答No.4

お世話になります。 一般的には、 No.1 の todo36 さんが書かれているように Response を操作して CSV ファイルを落とさせる方法がよいと思います。 上記を踏まえたうえで、一般的な方法を書きますと、 1. ログイン画面   認証したら、session にユーザーの   情報を保持するクラスのインスタンス等   を格納。 2. CSV ダウンロード画面   session 上に session にユーザーの   情報を保持するクラスのインスタンス等   が無い場合は、セッションエラー画面か、   ログイン画面へ強制的に遷移させる。 参考になるか解りませんが、 以下のページでの例でも、 Response オブジェクトに対して操作しています。 http://naoko.wankuma.com/designpatterns/designpatterns_0007_builder.html

radakatu
質問者

お礼

回答ありがとうございます。 >Response を操作して CSV ファイルを落とさせる方法 この方法を使い、サーバーにファイルを作ることなくCSVファイルをダウンロードさせることが出来ました。 ユーザー情報をsessionに保持させて、ユーザー情報が無い場合はセッションエラー画面へ強制遷移するようにしています。 ありがとうございました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

私も、WEBシステムの開発・担当をしております。但し、言語など 違うため、詳細まではわかりませんが、アドバイスのみです。 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する どちらも、必要です。 1はセキュリティ面から、誰でも御社のDBの情報が利用できてしまっては、困りますよね。 2は、後から直接ファイルアクセスを禁止することと、サーバーのファイルスペース節約のため、ダウンロード処理後、ファイルは消しましょう。

radakatu
質問者

お礼

回答ありがとうございます。 >どちらも、必要です。 仰るとおりですね。 CSVファイルをサーバーに生成することなく、クライアントがダウンロード可能となったので 1の場合ファイルが存在しないためダウンロード不能 2も条件を満たすことができました。 これからもアドバイスよろしくお願いします。

回答No.2

 『ログインしなくてもファイルがダウンロード出来てしまいます。』これは、データをサーバの共通フォルダに置き、共通フォルダがクライアントのネットワークで見える形で公開しているのでしょうか? 一例として: (1)ポータルへのログインで認証する。 (2)データ格納先は非公開。 (3)ログイン後WEBページからダウンロード。

radakatu
質問者

お礼

回答ありがとうございます。 No.1様のアドバイスにより、無事解決致しました >データをサーバの共通フォルダに置き データとは生成されたCSVファイルのことでしょうか? CSVファイルの格納先は公開されているので、フルパスさえ知っていれば誰でもファイルにアクセスできる状態でした。

関連するQ&A