10

AnonymousTemplate と LoggedInTemplate を使用して、APS.NET アプリケーションに LoginView があります。LoggedInTemplate 内に LoginStatus コントロールを配置しましたが、期待どおりに動作しません。

これがコードです

<asp:LoginView ID="LoginView1" runat="server">
    <AnonymousTemplate>
        <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate"
            DisplayRememberMe="False" PasswordRecoveryUrl="/" 
            DestinationPageUrl="/">
        </asp:Login>
    </AnonymousTemplate>
    <LoggedInTemplate>
        You are logged in as 
        <asp:LoginName ID="LoginName1" runat="Server"></asp:LoginName>.
        <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutAction="Redirect" 
            LogoutPageUrl="/" onloggingout="LoginStatus1_LoggingOut" />
    </LoggedInTemplate>
</asp:LoginView>

すべてのイベント ハンドラーは、コード ビハインド ファイルで正しく定義されています。

問題は、ユーザーがログインすると、LoginStatus コントロールからのログアウト リンクとともに自分のユーザー名が表示されることです。ログアウト リンクをクリックすると、ユーザーはログイン フォームに戻ります (ログイン フォームとログアウト フォームの両方が同じユーザー コントロールの一部です) が、ページを更新してもユーザーはログインしたままです。

LoginStatus コントロールを LoginView の外に移動すると、ログアウト プロセスが期待どおりに機能することに気付きました。また、LoginStatus が LoginView 内にある場合、ログアウト イベントが発生しないことにも気付きました。

何が問題なのか誰にも考えがありますか?

4

4 に答える 4

2

私はここで同じ問題に遭遇しています。loginview コントロールの外側にある loginstatus コントロールは、必要に応じて機能します。loginview コントロール内で機能しないのはばかげているようです。

編集** わかりました。Sitecore でこのページを作成していたことは省略しました。どうやら Sitecore は何らかの形で loginview コントロールを妨害しており、web.config の次のセクションに追加する必要があります。

  <sitecore>
    <rendering>
      <typesThatShouldNotBeExpanded>
        <type>System.Web.UI.WebControls.LoginView</type>
      </typesThatShouldNotBeExpanded>
    </rendering>
  </sitecore>

他の男に感謝...

-ビクター F.

于 2011-08-26T15:28:27.980 に答える
1
FormsAuthentication.SignOut()
FormsAuthentication.RedirectToLoginPage()

また、フォーム認証を適切な方法で使用しましたか?つまり、Web構成を内部ディレクトリに配置しましたか?

<system.web>
<authorization>
  <allow users="?"/>
</authorization>

于 2011-08-19T06:07:02.413 に答える
1

同じ問題が発生しています。しかし、私の解決策は、loginstatus コントロールをハイパーリンク コントロールに交換し、「logout=true」のようなクエリ文字列パラメーターを付けてハイパーリンクをホームページに移動させ、ホームページで Request.QueryString の値を確認することでした。これを行うにはnullではありません。

FormsAuthentication.SignOut();
于 2011-10-20T14:52:30.950 に答える
0

に変更してみLogoutActionましたLogoutAction="RedirectToLoginPage"か?私は通常、OnLoggingOutイベントを不要にする Cookie のクリアを .NET に処理させます。

于 2011-03-04T04:03:39.403 に答える