2016-09-27 9 views
1

属性私はアクションメソッドを実行する前に、いくつかの検証とリダイレクトを行うためにMVC.NETフィルタまたは属性をしたいAuthFeature取得ServiceStack MVC.Netでセッションが

Plugins.Add(new AuthFeature(() => new AuthUserSession(), 
       new IAuthProvider[] 
       { 
        new CredentialsAuthProvider() 
       }) 
       { IncludeRegistrationService = true }); 

でMVC.Netとservicestackを使用していますしかし、私はそれを行うためにユーザーセッションが必要です。

public class UserConfirmationAttribute : FilterAttribute, IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     //Get service stack user session 
    } 
} 

サービスまたはコントローラでは、セッションを取得するのが簡単ですが、SessionAs<AuthUserSession>()を使用する必要があります。 MVC.Net属性内でサービススタックユーザーセッションを取得するにはどうすればよいですか?

答えて

1

あなたFilterAttributeがServiceStackControllerから継承MVCコントローラのアクションのためである場合は、コントローラからそれを解決できます。

var ssController = filterContext.Controller as ServiceStackController; 
var session = ssController.ServiceStackProvider.SessionAs<AuthUserSession>(); 

そうしないとあなたが新しいServiceStackProviderインスタンスからセッションを取得することができます

var ssProvider = new ServiceStackProvider(filterContext.HttpContext.ToRequest()); 
var session = ssProvider.SessionAs<AuthUserSession>(); 
関連する問題