使用.NET Framework 4.5創建SPA應用程序,該應用程序將使用AngularJS。我按照說明實施了System.IdentityModel以指向第三方認證。如何處理註銷和重定向
Web.config文件編輯:
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
...
<system.web>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime requestValidationType="ourcustomvalidator, ourcustomnamespace" />
<pages controlRenderingCompatibilityVersion="4.0" validateRequest="false" />
</system.web>
....
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
...
所以在最初推出的單頁應用程序,網站重定向到授權網站。從那裏你登錄,授權,你被重定向迴應用程序。
現在我有一個WebAPI Restful部分作爲解決方案的一部分,以及記錄客戶端錯誤以及在應用程序中處理註銷。這導致我幾個問題,我沒有抓住:
1)如果我做一個/ api /註銷呼叫到我的WebApi,我可以調用FederatedAuthentication.SessionAuthenticationModule.SignOut();我在幕後退出。使用角度,我應該如何去重定向用戶?我注意到我發出這個命令後,如果我點擊F5,我的網站就會刷新,但我會自動重新登錄。我寧願回到初始頁面加載時的登錄屏幕。
2)如果我對我的WebApi進行一個/ api /自定義調用,並且我在幕後註銷,我如何捕獲並重定向用戶?現在我沿着線得到一個錯誤信息:
XMLHttpRequest cannot load https://mycustomloginurl.com/?wa=wsignin1.0&wtrealm=http%3a%2f%2flocalhost%3a561…%3dpassive%26ru%3d%252fwebapi%252fims%252ftesting&wct=2014-02-21T21%3a47%3a09Z.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:56181' is therefore not allowed access.
抱歉,如果這混亂的,我試圖環繞這一切我的頭。
好吧,我其實是想出了第一個。我需要得到signOutURI,然後用返回值做一個$ window.location.href。我仍然困惑如何處理第二個問題。 – hammer