web-dev-qa-db-ja.com

エラーページでユーザーが存在するか削除されたことを示す必要がありますか?

通常の公開Webサイトでは、ユーザーのプロファイルはすべての訪問者(スタックオーバーフローなど)に常に公開され、プライバシー設定または情報の削除によって特定の情報を制限できます。これで、ユーザーは、アカウントが技術的に「存在しない」ように、アカウントを削除することに決めました(私の場合は無効化)。私のシステムの設定方法では、アカウントが非アクティブ化されると、それらに接続されているコンテンツのユーザー名は、ゲストであるかのように「匿名ユーザー」になります。

これにより、他のユーザーに混乱が生じる可能性があると思います。また、誰かが自分のプロファイルページを表示しようとしたときに表示されるエラーの種類も心配です。私の腸は、それが存在したという事実を隠すために標準の404ページを表示するように指示しますが、ユーザー名は一意でなければならないので、誰でも登録ページに行き、ユーザー名を入力して、 it 本当に存在するかどうか。

別のWebサイトでも同様の問題があります。これにより、ユーザーは自分のプロファイルを一般に公開せず、登録されたユーザーにのみ表示することができます。繰り返しますが、未登録のユーザーが無効な権限でプロファイルを表示しようとしたときに表示されるエラーメッセージの種類のジレンマです。

したがって、他の訪問者にページを表示できない理由を理解させるために、「ユーザーが非アクティブ化されました」または「このプロファイルを表示するにはログインする必要があります」などの基本エラーを表示してもかまいませんユーザーのプライバシーを少しカバーし、ユーザーが存在する可能性があることを示すことなく、標準の404を表示しようとしていますか?どちらのルートについても気付いていない他の問題はありますか?

最初に戻るには、アカウントが無効になったときにユーザー名を「匿名ユーザー」に変更する必要がありますか?通常のリンクされた表示名の代わりに、ユーザー名のリンクされていないバージョンを表示するだけでかまいませんか?

3
animuson

単一のメッセージでこれらのさまざまな問題をすべて克服する適切な方法を見つけました。 「このページを表示できません」などの一般的なメッセージを表示するだけで、プライバシーの問題は解決されますが、混乱は解決されません。そのため、エラーを受け取る可能性のある理由allもリストします。次のようになります。

このページの表示に問題がありました。

考えられる理由:

  • 指定されたユーザーはシステムに存在しません。

  • ユーザーは、匿名ユーザーによるプロファイルの表示を許可しません。

  • ユーザーはアカウントを無効にしました。

存在しないユーザーの場合もカバーするため、そのページを表示しているユーザーが、ユーザーが存在していたかどうかを知る方法はありません(以前に存在していたことを知らない限り)。ユーザーが存在することを期待していた場合、存在しない理由の代替案を提案します。

これの問題は、3つのステータスコードを組み合わせていることです。

  • 401「見るにはログインする必要があります」の権限がありません

  • 403「ユーザーの非アクティブ化」の禁止

  • 「ユーザーが存在しない」ために404が見つかりません

401または403を使用すると、他の2つ(それぞれ)にはまったく意味がないので、404ステータスコードに固執します。 200 OK応答を送信することは、検索エンジンがページを実際のページだと考えるため、ページを自由にキャッシュできるため、まったく受け入れられません。同様に、ユーザーが以前に存在し、isキャッシュされている場合、さらに混乱が生じます。 404を送信すると、検索エンジンがそのユーザーの履歴を消去する必要があるキャッシュをクリアすることが期待されます(アカウントを無効にしたか、後で非公開にすることにした場合)。 その説明

要求されたリソースは見つかりませんでしたが、将来再び利用できる可能性があります。クライアントによる後続のリクエストは許可されます。

ページが技術的に「見つかった」場合でも、最も近いものです。少なくとも現時点では、要求されたページが存在しないことを適切に示しますが、将来、その存在を確認するために要求を続けることを禁止しません。

1
animuson

404ページには行きません。 404ページは単なるページではなく、応答でもあります。ページが見つからなかったことをクライアントに知らせます。何らかの理由で削除されたか、URLが間違っている。

何らかのセッションを使用して、ログインしているユーザーのみが利用できる情報を非表示にしている場合、選択したサーバー側のスクリプト言語(asp、coldfusion、jsp、php)を使用して、セッションの権限に従ってページを表示できます情報を表示します。

プロファイルが削除されている場合は、データストアから削除しないでください。代わりに、isdeletedの列を追加し、yesを確認します。誰かが削除プロファイルに到達したら、単にあなたのサイトにユーザーを生成させ、私たちのシステムにはもういません、そして彼らにいくつかのオプションを与えます。たとえば、誰かが出会い系サイトの出会い系プロファイルを閉じますが、他の一致を提案します。

データを削除しないことが非常に重要です。ユーザーが削除してから6か月後に戻ってきたとします。プロフィールを保存すると、メールキャンペーンなどで失ったユーザーを取り戻すことができます。 Facebookでさえ実際にあなたのプロフィールを削除するとは思わない。

この情報が完全に削除されて完全に削除される前に、この情報を保存する期間を条件に明記してください。

3
Frank

アカウントが非アクティブ化または削除されたことを公表するつもりはありません。 「このプロファイルを表示するにはログインする必要があります」、または「このコンテンツを表示する権限がありません」、または「このコンテンツを表示するにはログインする必要があります」という通知があります。それらの線に沿って一般的なもの

1
Anagio