2017-11-13 27 views
1

ログインするユーザーが必要なWebアプリケーションがあります。 のWebConfig:私はif文をFormsAuthenticationアクセスでASP.NETアプリケーションのログインページが拒否されました

if (checkCredentials.searchCredentials(attemptedName, passwordBox.Text) != null) 
      { 
       FormsAuthentication.RedirectFromLoginPage(attemptedName,false); 
      } 

知っている:

<!--Logging in stuff--> 
    <authentication mode="Forms"> 
     <forms loginUrl="login.aspx" timeout="2880"/> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

そしてlogin.aspxのページで

私は自分のデータベースを使用して、ユーザーの資格情報を検証した後、次のロジックをしている(二重の名前を確認しました)

しかし、私がアプリケーションを実行すると、ログインページはすぐにエラー401.2で開きます。助けていただければ幸いです:)

+0

を使用するときにフォーム認証の設定のために

<authentication mode="Forms"> <forms loginUrl="login" defaultUrl="home" slidingExpiration="true" timeout="20" name=".Auth" protection="All"> </forms> </authentication> 

構成2をフレンドリーなURLを使用する場合にこの情報がお役に立てば幸いです。 https://support.microsoft.com/en-us/help/301240/how-to-implement-forms-based-authentication-in-your-asp-net-applicatio – Baskar

答えて

1

Visual Studio 2017の一般的な問題フォーム認証、私の以前の答えの代替です。

Visual Studio 2017は、Microsoft.AspNet.FriendlyUrlsというNuGetパッケージをWebサイトまたはWebアプリケーションプロジェクトに自動的に追加します。このパッケージのため、フォーム認証は機能せず、ログインページでさえ何度もレンダリングされません。解決策は、私の前の回答で説明

  • RouteConfig.RegisterRoutes(RouteTable.Routes);を言うのglobal.asax でのApplication_Startイベントで行をこの パッケージを削除するか、コメントすることです。このアプローチを使用すると、あなたのウェブサイトはfriendlyUrlの利点を失います。
  • しかし、以下の2つの異なる構成で言及される第3の解決策がある。いずれかを使用することができます。

    • CONFIGURATION 1は、ログイン及びdefaultUrl
      値からASPX拡張を除去します。

    • コンフィグレーション2はaspx拡張を保持しますが、login.aspxに対応するfreindlyurlに特別なアクセス パーミッションを追加します。

    (アクセス許可で?は、すべての認証されていないユーザーを意味し、*は、すべてのユーザーが、すなわち+認証されていないユーザーを認証された意味)

注:私が試したし、このソリューションをテストしています。フォーム認証の設定のための

構成1フレンドリーなURL

<system.web> 
<!--keep the aspx extensions for login and default pages--> 
<authentication mode="Forms"> 
    <forms loginUrl="login.aspx" defaultUrl="home.aspx" 
     slidingExpiration="true" timeout="20" name=".Auth" protection="All"> 
    </forms> 
    </authentication> 
</system.web> 

<!-- add access permissions for friendly url corresponding to login.aspx--> 
<location path="login"> 
     <system.web> 
      <authorization> 
       <allow users="?" /> 
       <deny users="*" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 
1

Visual Studio 2017を使用しているので、まずチェックする必要があるのはMicrosoft.AspNet.FriendlyUrls packageです。次の手順を実行します。

  • コメント RouteConfig.RegisterRoutes(RouteTable.Routes);を言うと、今、あなたのページをみてくださいGlobal.asaxの中の行。しかし、ブラウザのキャッシュをクリアすることを忘れないでください。このURLの古いキャッシュバージョンは401.2のエラーが表示され続けます。
  • まだ解決されていない場合は、上記のパッケージを ソリューションエクスプローラでソリューションノードを選択してからツール => NuGet Package Manager =>ソリューションパッケージの管理に移動してください。このパッケージのインストール済みのリストをチェックインし、それを選択して右の解決方法 チェックボックスを選択し、アンインストールボタンをクリックします。

以下は、確認が必要なその他の事項です。

ウェブ設定のフォームタグを次のように変更してみてください。要件に応じてdefaultUrlとtimeoutの値を変更します。

<authentication mode="Forms"> 
<forms loginUrl="login.aspx" defaultUrl="home.aspx" 
    slidingExpiration="true" timeout="20" name=".Auth" protection="All"> 
</forms> 
</authentication> 
<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 

また、C#コードはログインボタンのクリックイベントにする必要があります。それがどこにあっても問題を見ることができます。

すべての認証されていないユーザーに対してLogin.aspxを許可します。 Web設定ファイルの最後に</configuration>の直前にこの設定を追加してください。 Login.aspxのパスをSecurity/login.aaspxのようにrootでない場合は、そのページがrootのSecurityフォルダにある場合は入力します。

<location path="Login.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 

[コントロールパネル]> [管理ツール]> [インターネットインフォメーションサービスマネージャ]の順に選択してIIS管理コンソールを開きます。次に、ウェブサイトノードを展開し、使用しているウェブサイトを選択します。右側のウィンドウで[認証]をダブルクリックし、匿名とフォームの認証が有効になっていることを確認し、次のスクリーンショットに示すように他のオプションが無効になっていることを確認してください:Security settings in IIS website

+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/158972/discussion-on-answer-by-sunil-login-page-in-asp-net-application-with-formsauthen) 。 – Andy

関連する問題