Symfony2 を使用して構築された Web アプリケーションがあり、いくつかの項目が他のユーザーと共有されています。アイテムが共有されると、ユーザーはそのアイテムへのリンクを受け取ります。リンクを受け取ったユーザーがメールをクリックすると、サイトへの認証が自動的に行われるようにしたいと考えています。これまでのところ、私がやったことは次のとおりです。
- 共有リンクで一意のトークンを生成し、リンクに追加します
- リンクを共有したユーザーがリンクをクリックすると、一意のトークンがチェックされ、それぞれのユーザーが認証されます。
ただし、この方法には欠点があります。他のユーザーが同じリンクをコピーしてブラウザに貼り付けた場合、または元の受信者がメールを他の人に転送した場合、そのユーザーはリンクの元の受信者として認証されます。これらの欠陥を乗り越えるためのアプローチは何ですか? 私が実際に欲しいのは:
- リンクは、電子メール内からクリックされた場合にのみユーザーを認証する必要があり、直接アクセスは許可されません。
- ユーザーは、リンクが最初に送信された電子メールからリンクをクリックした場合にのみ認証されます。
要件は多少似ていますが、まったく同じではないいくつかの質問を読みました。また、それらへの対応は、それは不可能であるという結論に至りました。本当か ?