我無法使用SS認證與Umbraco安裝一起工作。每當我使用Authenticate屬性訪問DTO或服務時,我都會重定向到umbraco登錄。 要重現: 我創建了一個新項目,並從Nuget安裝了Umbraco(嘗試使用4.7.1,4.8.1和4.9.0,結果相同),並從Nuget安裝了SS。我安裝SS在web.config中/ API路徑下運行:如何讓服務堆認證在Umbraco安裝中工作
<location path="api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</location>
,並添加/ api來保留路徑,以避免一把umbraco處理這樣的:
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/api" />
而在AppHost.cs我「已經改變了啓用EndpointHostConfig和認證:
SetConfig(new EndpointHostConfig
{
DebugMode = true, //Show StackTraces when developing
ServiceStackHandlerFactoryPath = "api"
});
//Enable Authentication
ConfigureAuth(container);
而且我已經改變了的ConnectionString在ConfigureAuth使用一把umbraco數據庫:
var connectionString = ConfigurationManager.AppSettings["umbracoDbDSN"];
最後,我設置的HelloWorldService屬性:我重定向到
http://localhost:56835/api/hello
,並馬上:
http://localhost:56835/apilogin?redirect=http%3a%2f%2flocalhost%3a56835%2fapi%2fhello
[Authenticate]
public class HelloService : ServiceBase<Hello>
{
protected override object Run(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
我再通過REST烏里訪問了HelloWorldService
並呈現默認的Umbraco 404頁面,這意味着SS突然ly讓Umbraco處理認證。如果我刪除了Authenticate屬性,SS將完美地處理請求。
我錯過了什麼?
我發現,它只是部分Umbraco的錯。重定向的主要原因是,當SS返回401時,不是將THAT響應返回給客戶端,而是web.config中的部分將客戶端重定向到登錄頁面。我甚至試圖刪除部分,但沒有運氣。我如何防止IIS抓取該響應? –
BoKDamgaard
更多信息。這是因爲Umbraco需要這條線 ' ' 。 –
BoKDamgaard
我需要找出在部分禁用該功能,我已經試過沒有運氣添加此 '<位置路徑=「API」有的allowOverride =「假」> <授權> <允許用戶=「* 「/> authorization> <! - 必需的IIS 7.0 - > <模塊runAllManagedModulesForAllRequests = 「真」> <除去名稱= 「FormsAuthentication」/> ' –
BoKDamgaard