ASP.NetMVC4コントローラーでServiceStack[Authentication]属性を機能させるのに問題があります。ログインの詳細が正しく送信された後でも、属性を持つページ/アクションメソッドがユーザーをログインページにリダイレクトし続けます。
SocialBootstrapApiの例に従いましたが、違いは、すべての認証Webサービス呼び出しがコントローラーから行われることです。
this.CreateRestClient().Post<RegistrationResponse>("/register", model);
私がこれまでに行ったことの他のこと:
- AuthUserSessionをサブクラス化する独自のユーザーセッション実装を使用します(例とそれほど違いはありませんが、Userテーブルの独自の実装を使用します)
- BaseControllerでServiceStackControllerを継承し、デフォルトのログインURLを上書きします
- ユーザーセッションの実装でAppHostの認証機能を有効にする
登録は機能し、ユーザー認証ロジックは機能し(セッションは持続しませんが)、リクエストにCookiess-id
とCookieが表示されます。ss-pid
だから私の質問の完全なリスト:
- [Authenticate]属性を機能させるにはどうすればよいですか(または、何を間違えたのですか)。
- MVCコントローラーでユーザーセッションを保存して再利用するにはどうすればよいですか?現時点
this.UserSession
では常にnullです。 - ユーザーをログアウトするにはどうすればよいですか?
this.CreateRestClient().Get<AuthResponse>("/auth/logout");
動作しないようです。
更新1:
セッションCookie(ss-id
およびss-pid
)は、セキュリティで保護されたページ([Authenticate]属性を持つページ)を読み込もうとすると、資格情報が送信される前に作成されます。これは予想される動作ですか?
更新2:
セッションがに保存されていることがわかりMemoryCacheClient
ますが、ベースコントローラーでセッションを取得しようとするとthis.Cache.Get<CustomUserSession>(SessionKey)
nullが返されます(SessionKeyは次のようになりますurn:iauthsession:1
) 。