reset_password_token（invitation_token）が上書きされてまう、Mac Sierra Safariで！

# 状況
パスワードリセットを行おうとする、tokenが不正ですと言われ、更新ができない。

## クライアント環境
OSバージョン： Mac Sierra 10.12.6
ブラウザ： Safari 11.0.1

## サーバ環境
OS： Red Hat Enterprise 6.2 （古くて恥ずかしい）
DB： MySQL 5.5.13
言語： ruby2.1（こっちも古くて恥ずかしい） Rails 4.1.0（これもry）

## 現象
Mac Chrome, Windows Edge, Mac Safari 10.1.Xなどで確認し、再現できなかったが、偶然、同一バージョンで動作確認した際に再現できたので、再現内容を一部キャプチャをつけながら、報告します。

1. Safari 11.0.1を使用して、ログインを行いパスワードを保存する。
2. ログインセッションのタイムアウトまで待つ。
3. ログインが必要なページへアクセスし、ログインフォームが表示され、ログインフォームにログインIDとパスワードが入力されていることを確認する。

**ログイン画面（Safari）**
<img width="1338" alt="スクリーンショット 2017-11-20 14.47.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/189af838-3d6d-9030-08b1-4b4eb685ba1d.png">
※ キャプチャの下部に表示されているhtmlは、Safariの開発ツールを表示し、要素を表示しています。
4. パスワードのリセットへ進み、パスワードリセットのメールを送る（キャプチャ上では、パスワードをお忘れの方はこちらのリンク）
5. メールに記載されたURLから、サイトへアクセスする。

**パスワード再設定画面（Safari）**
<img width="1318" alt="スクリーンショット 2017-11-20 15.13.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/a89dd2dc-f210-ea3e-c05c-9e15233669f2.png">

*驚愕的なのが、input[name="user[reset_password_token]"]の値が、ログイン画面でautocompleteで補完されているアカウント名になっていること*

**パスワード再設定画面（Chrome）**
<img width="1354" alt="スクリーンショット 2017-11-20 14.51.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/891f8faf-93a0-2801-2a30-f7637e2f7ae8.png">

*もちろんChromeでは、tokenの値を上書きするようなことはない*


## 対応策
### 1. autocomplete=offを指定する
*効果なし*
<img width="1314" alt="スクリーンショット 2017-11-20 15.23.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/ba6a9298-34fd-d281-3080-6f86ad0c4e6c.png">

### 2. 順番を変えてみる。
*効果なし*
<img width="1314" alt="スクリーンショット 2017-11-20 15.12.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/2feb486b-96af-2dc6-d314-c85655b91150.png">

### 3. name属性を変更する。（user[reset_password_token] -> user[test]）
*効果なし*
<img width="1315" alt="スクリーンショット 2017-11-20 15.12.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/df28ebc6-d616-80b7-6bbd-01a5bfa7e6af.png">

### 4. name属性を変更する。（user[reset_password_token] -> reset_password_token）
*効果あり（が、Railsを利用しているサイトのため、多分に漏れずdevise Gemを利用しているため、対応が苦しい。）*
<img width="1312" alt="スクリーンショット 2017-11-20 15.15.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/f9c1d75e-4f04-b2fd-f38b-7dffca2d061b.png">

### 5. reset_password_tokenを二つ設置する。
*効果あり（同じ名前のパラメータが二つ送られるが、URLパラメータは後勝ちなので、正常に動作する）*
<img width="1313" alt="スクリーンショット 2017-11-20 15.19.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/098402cf-6bed-55ff-2e11-211a5c8f264f.png">

### 6. type="text"にし、style="display:none;"を指定する。
*効果あり（理由はわからないが、hidden属性のautocomplete=offは効果ないが、text属性のautocomplete=offは効果がある模様）*
<img width="1315" alt="スクリーンショット 2017-11-20 15.22.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/e31cf187-7b4e-7c9e-d73a-cc3b6baa0dce.png">

## 結論： 上記の6つの方法が検討され、キモいが5番を選択することにしました。
6番も悪くないが、いつどのバージョンで、text属性のtokenも上書きされる可能性があることが配慮され、安全そうな6番になりました。


## 最終結果： ５番でリリースしようと思ったら、もっと良い方法を同僚のYさんが提案してくれました。
*id属性を消したら、問題ないと思いますよと。*
<img width="1316" alt="スクリーンショット 2017-11-20 15.29.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/115974/c5f9f847-4768-bedd-6fa7-f5226c7d0e42.png">

### ほんとだ！！！！！！ id属性を消すと値が上書きされない！！！！

name属性ではなく、id属性をみて、上書きするのか、なるほど。
ほんと勉強になった。