56

この web.config のように ASP.NET で Windows 認証を使用している場合、どのようにログアウトしますか?

<authentication mode="Windows" />

私はすでに次のことを試みましたが失敗しました。リダイレクトしますが、ユーザーをログアウトしません。

void logoutButton_Click(object sender, EventArgs e) {
    HttpContext.Current.Session.Clear();
    HttpContext.Current.Session.Abandon();
    ViewState.Clear();
    FormsAuthentication.SignOut();
    Response.Redirect("/");
}

背景情報:

ローカル ファイルにアクセスするには、Active Directory を使用して ID を偽装する必要があるため、Windows 認証を使用する必要があります。また、フォーム認証を使用して偽装することはできませHttpContext.Current.User.IdentityWindowsIdentityフォーム認証を使用して偽装する

4

8 に答える 8

40

「Windows」認証を使用している場合、サーバー側のログアウト ボタンは機能しません。ログアウト ボタンが必要な場合は、「フォーム」認証を使用するか、ユーザーのブラウザを閉じる必要があります。

于 2009-10-09T19:11:03.257 に答える
24

IE ブラウザのみ、Windows 認証を使用している場合、次の JavaScript を使用してユーザーをログアウトできます。(注: ブラウザーを閉じる必要はありませんが、ユーザーが IE 以外のブラウザーを使用している可能性があるため推奨されます)。

ユーザーが [いいえ] をクリックしてブラウザを閉じると、認証が必要なサイトのページにアクセスしようとすると、ユーザー名とパスワードの入力を求められます。

try {
   document.execCommand("ClearAuthenticationCache");
}
catch (e) { }
window.close();

このコードは、SharePoint の Signout.aspx ページから取得したものです。

于 2011-04-20T13:58:04.637 に答える
6

Windows 認証を使用する SharePoint アプリケーションがあり、15 分後に自動ログアウトする必要がありました。いくつかのコードを混同しましたが、結果は次のとおりです。IEでは正常に動作します。

<script type="text/javascript">
var t;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

function logout() {

    try {
        document.execCommand("ClearAuthenticationCache");
        window.location.href = window.location.protocol.replace(/\:/g, '') + "://" + window.location.host + "/_layouts/customlogin14.aspx";
    }
    catch (e) { }

}

function resetTimer() {
    window.clearTimeout(t);
    t = window.setTimeout(logout, 900000);
} 

これらのコードをマスター ページに入力すると、15 分間アイドル状態になった後、ログイン ページが表示されます。これが誰かを助けることを願っています

于 2013-06-10T19:27:46.913 に答える
3

IE と Firefox の両方で JavaScript を使用してこれを動作させていますが、IE でログインしているすべてのものからログアウトします。Safari ではある程度機能しますが、Safari ではフィッシング警告が表示されます。Opera では動作しません。

try {
    if (document.all) {
        document.execCommand("ClearAuthenticationCache");
        window.location = "/";
    } else {
        window.location = "http://logout:logout@example.com";
    }
} catch (e) {
    alert("It was not possible to clear your credentials from browser cache. Please, close your browser window to ensure that you are completely logout of system.");
    self.close();
}
于 2011-06-17T16:59:07.857 に答える
1

私が見た最良の回答は、関連する StackOverFlow の質問にあります。

IE の ClearAuthenticationCache に相当するブラウザはありますか?

HTTP 基本認証使用時のユーザーのログアウト

基本的に、無効な資格情報を使用して AJAX 要求をサーバーに送信し、サーバーにそれらを受け入れさせる必要があります。

于 2011-12-14T15:06:13.723 に答える