2017-11-21 13 views
0

ブラウザにアプリケーションの複数のインスタンスを開くことが許可されていない状況がアプリケーションにあります。クッキーを読んでいるので、すでに開いているセッションがある場合、複数のセッションを開こうとしていることをユーザーに警告します。 ブラウザがクラッシュした場合にクッキーを削除する方法

何らかの理由でブラウザがクラッシュしてもブラウザに古いCookieが残っている場合や、ユーザがアプリケーションを再び開こうとしているときに、ブラウザがユーザにログインを許可していないことがあります。ユーザーはブラウザの履歴からCookieを手動で削除する必要があります。ビジネスはそのプロセスを望んでいません。

FYI私はangularJSを使用しています

Found the same question in other post but didn't find an answer I want here

誰か助けてもらえますか?前もって感謝します!


私は次のコードを思いついた。しかし、アプリケーションがクラッシュすると、クッキーはまだブラウザに座っており、ユーザーはまったくログインできません。私の唯一の回避策は、クッキーをブラウザから手動で削除してログインすることです。

var duplicateApp = false; 
    function createCookie(name,value,days) { 
     var expires = ""; 
     if (days) { 
      var date = new Date(); 
      date.setTime(date.getTime() + (days*24*60*60*1000)); 
      expires = "; expires=" + date.toUTCString(); 
     } 
     document.cookie = name + "=" + value + expires + "; path=/"; 
    } 

    function readCookie(name) { 
     var nameEQ = name + "="; 
     var ca = document.cookie.split(';'); 
     for(var i=0;i < ca.length;i++) { 
      var c = ca[i]; 
      while (c.charAt(0)==' ') c = c.substring(1,c.length); 
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
     } 
     return null; 
    } 

    function eraseCookie(name) { 
     createCookie(name,"",-1); 
    } 

    window.onload = function(){ 
     var MyAppCount=readCookie("MyApp"); 

     if (MyAppCount > 0) { 
      duplicateApp = true; 
      alert("You are attempting to open multiple application sessions.\n\nPlease close any existing application from the web browser before restarting the application."); 
      var win = window.open("about:blank", "_self"); win.close(); 
     } 
     else { 
      duplicateApp = false; 
      createCookie("MyApp", 1, 1); 
      window.onunload = function(){ 
       if (duplicateApp == false) eraseCookie("MyApp"); 
      }; 
     } 
    }; 

アプリケーションの1つのインスタンスのみを開くようにユーザーを制限するために必要な変更を提案してください。

+0

一般的に、1人のユーザーに1つのセッションが必要な場合は、新しいセッションが古いときに新しいセッションを防ぐのではなく、古いセッションを無効にすることをお勧めします。これはブラウザのクラッシュの問題を解決し、ユーザーが決してログインできないようにします。 –

+0

私にはソフトウェアロジック/アーキテクチャの問題のように聞こえます。 – lin

+0

ありがとうございました。それは、新しいセッションを防止するのではなく、古いセッションを無効にする意味があります。 –

答えて

0

私は通常、ログインページで新しいセッションを作成し、ユーザーが正しい資格情報で再度ログインしたときに古いセッションを無効にすることでこれを処理します。

+0

ありがとうございました。それは、新しいセッションを防止するのではなく、古いセッションを無効にする意味があります。 –

関連する問題