2016-01-25 179 views
1

我有一個現有的asp.net mvc web應用程序,我想停止瀏覽器從下次自動記住密碼。我可以這樣做,而不需要更改密碼上的輸入autocomplete =「off」,而我可以看到這應該解決未來的問題,任何已經完成此操作的人可能仍然可以在密碼緩存時登錄。ASP.Net MVC - 停止自動完成密碼

回答

1

確實autocomplete="off"會做的伎倆。你會看到它被用在這裏左右爲好(右上):

@Html.TextBoxFor(model => model.Input, new { autocomplete="off" }) 

您也可以將所有的人都在一次:

<input style="display: inline-block; width: 188px; max-width: 188px;" name="q" placeholder="search" value="" tabindex="1" autocomplete="off" maxlength="240" type="text"> 

您可以用剃刀將它添加到您的輸入使用jQuery:

$(document).ready(function() { 
    $("input:text, form").attr("autocomplete", "off"); 
}) 

對於緩存部分,看看從"How to Turn Off Form Autocompletion" (MDN)此摘錄(整個文檔值得一讀):

這裏設置autocomplete="off"有兩個作用:

  • 停止瀏覽器保存現場數據後自動完成類似的形式,雖然通過瀏覽器有所不同試探。
  • 它在會話歷史記錄中停止瀏覽器緩存表單數據。表單數據緩存在會話歷史記錄中時,用戶填寫的用戶填寫的信息將在用戶提交表單後可見,並且 單擊後退按鈕返回到原始表單頁面。

在某些情況下,即使autocomplete屬性設置爲off,瀏覽器也會不斷提示自動填充值 。對於開發者來說,這種意想不到的行爲可能會令人費解。訣竅真正 迫使沒有完成是一個隨機字符串分配給屬性 像這樣:

autocomplete="nope"

由於這個隨機值不是一個有效的,瀏覽器會放棄。

您還應該檢查此行爲在所有主流瀏覽器之間是否一致(具體取決於您所支持的瀏覽器支持情況)。

更新:邁克爾·劉在評論中指出,「現代瀏覽器忽略密碼字段autocomplete屬性」,在這種情況下,我不知道一個合法的解決方案。

你可以嘗試把password類型的附加input場您的實際一個頂部,並將其設置爲隱藏,瀏覽器應該嘗試自動完成,與其:

<!-- before your actual password field --> 
<input style="display: none;" type="password" name="pwdplaceholder"/> 

...然而搞亂瀏覽器行爲不是最佳實踐。

還可以看看another SO question(由Michael Liu在評論中分享)。

+0

這實際上回答了這個問題嗎?來自OP:「我可以看到這應該解決未來的問題,任何已經完成此操作的人可能仍然可以在密碼緩存時登錄。」 –

+0

現代瀏覽器在密碼字段上忽略'autocomplete =「off」'屬性。 –

+1

@MichaelLiu不是'autocomplete =「nope」'每個上面的摘錄應該達到什麼? – trashr0x