2013-08-07 80 views
1

嘗試使用ServiceStack進行身份驗證,並將其重新定向到登錄頁面,如下所示:這是ServiceStack /認證中的錯誤嗎?

Plugins.Add(new AuthFeature(
      () => new CustomUserSession(), //Use your own typed Custom UserSession type 
      new IAuthProvider[] { 
       new CredentialsAuthProvider(),    //HTML Form post of UserName/Password credentials 
       new TwitterAuthProvider(appSettings),  //Sign-in with Twitter 
       new FacebookAuthProvider(appSettings),  //Sign-in with Facebook 
       new DigestAuthProvider(appSettings),  //Sign-in with Digest Auth 
       new BasicAuthProvider(),     //Sign-in with Basic Auth 
       new GoogleOpenIdOAuthProvider(appSettings), //Sign-in with Google OpenId 
       new YahooOpenIdOAuthProvider(appSettings), //Sign-in with Yahoo OpenId 
       new OpenIdOAuthProvider(appSettings),  //Sign-in with Custom OpenId 
      }, "http://www.anyURIhereisignored.com")); 

然而,在這種情況下,「http://www.anyURIhereisignored.com」的URI參數會被忽略。

看看AuthFeature的類定義,我發現htmlRedirect參數被聲明爲可選的,默認值爲「〜/ login」,但它似乎總是使用該值並忽略傳入的內容。看起來,儘管htmlRedirect的值最初被設置爲傳遞的URI,但它在內部不會使用它,而是總是默認爲「〜/ login」。有沒有人遇到同樣的問題?

回答

1

如果您使用MVC4和您的控制器從ServiceStackController <>爲每ServiceStack DOCO繼承,那麼你可能想嘗試重寫LoginRedirectUrl屬性:

public override string LoginRedirectUrl 
{ 
    get { return "/Account/Login?redirect={0}"; } 
} 

這將重定向任何身份認證的請求對由指定值組成的登錄url採取安全措施。

如果您想在MVC中使用ServiceStack身份驗證,還應該確保從web.config中除去ASP.NET成員資格模塊。

+0

是的,我正在使用MVC4,此代碼確實有效!你認爲這是通過AppHost中的AuthFeature設置它並忽略它在MVC4中的錯誤? – Val

+0

我相信AuthFeature規範允許您在僅使用本地ServiceStack框架時重定向到自定義html片段。通過繼承ServiceStackController,您選擇了[MVC](http://www.servicestack.net/mvc-powerpack/)框架,該框架本身位於核心[System.Web.Mvc](https:/ /github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.FluentValidation.Mvc3/Mvc/ServiceStackController.cs)。我不會說這是一個錯誤,只是你選擇了ServiceStack的一部分。 – SteveChapman

+0

順便說一下,如果您瀏覽[第二個鏈接](https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.FluentValidation.Mvc3/Mvc/ServiceStackController),您將看到有問題的覆蓋。 CS)在上面的評論 – SteveChapman

1

我有一個自定義URI設置爲「〜/帳戶」,它工作正常。我試圖改變它,以谷歌,其結果是,你正在尋找:

https://www.google.co.uk/?redirect=http://localhost/secure 

你重寫屬性中的重定向指示需要認證即。

[Authenticate(ApplyTo.All,"~/login")] 

+0

不,我甚至嘗試添加這個指令,其中的URI和忽略它。我認爲它很可能不適用,因爲它的MVC4。 – Val