MVC5 WebアプリケーションをLinux MonoDevelopに移植しようとしています。Mono MVC5 User.Identity.IsAuthenticatedは、FormsAuthentication.SetAuthCookie()でログインした後にfalseを返します。
サイトではFormsAuthenicationを使用しているため、ログイン操作ではSetAuthCookie()を呼び出し、自分のコントローラではAuthorizeAttributeを使用して、ログインしたユーザーだけが機能にアクセスできるようにします。
これはWindows上でうまく動作します。
Monoに移植してMonoDevelopでデバッグした後、動作していないことがわかります。実際には、ログインに成功した後、ユーザーはログインページに再度リダイレクトされます。
HomeControllerの[Authorize]属性を削除してみましたが、何が起こっているかを確認するために、HomeControllerアクションでUser.Identity.IsAuthenticatedがfalseを返すことを認識しました。私はそれがログインへのリダイレクトを得る理由だと思います。
しかし、なぜUser.Identity.IsAuthenticatedがfalseを返すのでしょうか?
WindowsのSetAuthCookie()がhttpコンテキストに.ASPXAUTHクッキーを作成することを確認しました。 Linuxでは、httpコンテキストに.MONOAUTHクッキーを作成します。私はモノラルで、SetAuthCookie()はsuccesfuly実行される、ことを実現...
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" name=".ASPXAUTH" />
</authentication>
しかし、これは動作しませんでした
UPDATE を: は私がでweb.configファイル内のクッキー名を設定しようとしましたしかし、クッキーはそこにありません(Firefoxのクッキー管理を使用して)。それでも、デバッグ時にResponse.Cookiesコレクションには.ASPXAUTHクッキーが組み込まれています。それはクライアント上で生成することができないようです。
信じられないほど!ありがとう、それはまさに私の場合もそうでした。 .ASPXAUTHクッキーとともに初期化された他のクッキー-Bがありました。 B-クッキーは、HttpRequestに即座に追加されなかったので、Bの存在を正確にチェックして、FormsAuthentication.SignOut()を呼び出して自分の.ASPXAUTHクッキーを殺す機能を引き起こしました。 – cnom