2012-01-24 17 views
0

特定のフォルダへのアクセスを匿名ユーザーに制限し、ログインしているユーザーにフォルダへのアクセスを許可するWebサイトプロジェクトに取り組んでいます。 これは開発マシン。公開後にフォーム認証が機能しない

ただし、Webサイトを公開してWebサーバー(Windows Server 2008、IIS7)に展開してから、フォーム認証が機能していないように見えます。匿名ユーザーは「制限付き」フォルダにアクセスできます。 開発マシンとWebサーバーの両方でwebconfigを比較したところ、まったく同じです。

このtutorialを使用して、.NET Frameworkに組み込まれたWebサイト管理ツールを使用して、開発マシンのディレクトリへのアクセス/制限を設定しました。しかし、私はこのツールがローカルホストであることを理解していますか?

注:私はasp.netのログインと登録のコントロールを使用していません。私はコードの背後にあるカスタム関数を使用しています(C#)

この問題は場所の変更によって引き起こされますか? 開発マシンディレクトリ:C:\ユーザーはプロジェクト\ Osqar \ Visual Studioの2010 \メガトロン\ドキュメント\ - v0.2デベロッパー\ OSQARv0.1 Webサーバーのディレクトリ:C:\のinetpub \ wwwrootの\ Osqar

私はここで少し失われているので、どんなアドバイスも大歓迎です。ここで

は、Web設定ファイル authorizationセクションが存在しないことのようです

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <connectionStrings> 
     <add name="dbConn" connectionString="data source=mssql.database.com; Initial Catalog=devworks_oscar;User ID=myusername;Password=password" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
     <authentication mode="Forms"> 
      <forms name="Osqar" loginUrl="/login/login.aspx" protection="All" path="/" timeout="60" /> 
     </authentication> 

     <compilation debug="true" /> 
     <pages /></system.web> 
    <system.webServer> 
     <defaultDocument> 
      <files> 
       <add value="index.aspx" /> 
      </files> 
     </defaultDocument> 
    </system.webServer> 
</configuration> 
+1

authroisationルール(アクセスルール)はどこですか?あなたがウェブでそれらを持っていれば。それらのルールの存在をチェックするか、またはそれにタグを投稿する – Mubarek

+0

ルールは、ASP.NET Webサイト管理ツール(問題のリンク)を使用して作成されます。その後、WebサーバーのInetPubフォルダにサブフォルダを公開しました。承認ロールは開発マシンのwebconfigでは表示されませんが、動作します。上記は開発マシンのwebconfigを示しています(作業中) – HGomez90

+0

もちろん、デフォルトのルールはすべてのユーザーを許可するためです。はい、Webサイト管理ツール(WAT)はルールを追加し、プロンプトが表示されたらweb.configの変更を許可する必要があります。 VS上ですべて保存をクリックします。 – Mubarek

答えて

1

よう<cofiguraation>メインタグの下にこれを置く:あなたが特定のファイルを制限している場合

<configuration> 
<location path="~/RestrictedFolder"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
</location> 
.... 

ん:

<location path="~/securedpage.aspx"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
</location> 

は、展開プロジェクト

にweb.configファイルにこれらの変更を行います

また、Wiktorがウェブサイト全体への匿名アクセスをブロックするための使用方法を提案した場合

<authentication>タグ

<authorization> 
    <deny users="?"/> 
</authorization> 

たり、プロジェクトのルートの下にフォルダを作成し、そのフォルダ内に保護されたページを置く前または後に、おそらく<system.web>下に置きます。フォルダをRクリックして新しいweb.configファイルを追加し、<system.web>タグの下に以下を入力してください

<authorization> 
    <deny users="?"/> 
</authorization> 
+0

最終的な部分はそれを働かせた部分でした。保護されたディレクトリ用の新しいweb.configを作成します。ありがとう – HGomez90

2

(?)です。あなたは、許可の必要なレベル(匿名ユーザーを拒否)についての情報がない

<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 

のようなものを持っている必要があり、アプリケーションサーバは、誰もがどこにでも行くようになります。

+1

私は彼がサブフォルダにweb.configを持っていると思うし、彼の質問によると、認証はデプロイメントの前に働いていた。 – Mubarek

+0

@nuux正しい。それはinetpubフォルダにあり、その特定のプロジェクトのフォルダ(Osqar)の中にあります。 Webサーバーは多くのWebサイトをホストします。 Wiktor Zychla、私はこの解決策を試しましたが、ASP.NETメンバーシップコントロールを使用していないので、これは効果がありません。 – HGomez90

+0

@Rupert:同じプロジェクトに別のweb.configファイルがあるかどうか尋ねました。あなたがそうでなければ、セキュリティに関する完全なwebconfigタグを表示するようにしています。 Wiktorが掲示したルールは、メンバーシップやフォームやウィンドウを使用するかどうかを決める必要があります。問題は、あなたのプロジェクトにどのようなルールがありますか?ルールが正しく使用されていないと、ルールはお互いを上書きする可能性があります。 – Mubarek

関連する問題