Webアプリケーション全体のweb.configで設定するのではなく、ユーザーごとに認証Cookieのドメインを設定できる必要があるASP.NETMVCWebアプリがあります。
これが私が現在設定しているものです:
<httpCookies domain=".mydomain.com" />
シナリオ1
ユーザーが最初にサイトにアクセスしたとき、それらはwww.mydomain.comにあります。彼らが私たちのサイトのメインセクションにログインする場合、彼らはwww.mydomain.comにとどまり、ログインは以下を呼び出します:
FormsAuthentication.SetAuthCookie(user.Id + "|"
+ user.EmailAddress + "|"
+ user.Role.ToString()
, true);
...そして、www.mydomain.comが.mydomain.comのCookieドメインと一致するため、Cookieは正しく設定されます。すべて問題ありません。
シナリオ2
ユーザーは、companyname.mydomain.comというサイトの独自のセクションに登録することもできます。このシナリオでは、www.mydomain.comまたはcompanyname.mydomain.comのいずれかからログインすると、Cookieは正常に設定されます。これも、.mydomain.comのCookieドメインと一致します。
シナリオ3(問題)
ただし、ユーザーは自分のドメイン名を私たちのサイトにポイントし、companyname.mydomain.comにアクセスした場合に表示されるものを反映させることができます。たとえば、ドメインcompanyname.comを登録し、そのAレコードをサーバーにポイントしてから、URLをcompanyname.mydomain.comではなくcompanyname.comにすることをサイトで指定するとします。彼らはcompanyname.comにアクセスし、それは私たちのサイトの彼らのセクションのログインページを示しています。今、彼らはログインしようとします、そしてもちろん、companyname.comが.mydomain.comの私たちのクッキードメインと一致しないので、それは機能しません。
web.configでhttpCookiesドメインを完全に設定しないのはなぜですか?その場合、www.mydomain.comにいて、companyname.mydomain.comにログインしようとすると、Cookieがwww.mydomain.com用であるため、失敗します。
このユーザーのリクエストはmydomain.com以外のドメインからのものであるため、このユーザーのFormsAuthenticationCookieのドメインを.mydomain.comではなくドメイン名に設定する必要があります。
何か案は??