2017-02-04 109 views
0

我使用Java(maven)作爲後端,Angular 2作爲使用Shiro的前端。只要我使用網站,我就可以導航到不同的網址。手動輸入URL會導致404錯誤。Apache Shiro - 瀏覽器URL只適用於使用網站瀏覽

我不確定問題出在Angular上(因爲它使用單個index.html頁面),還是在shiro.ini中的[URL]部分。

[URL]節留空或添加/index.html = anon繼續導致相同的問題。使用authc將我重定向到login.jsp。

不管用戶的狀態/角色如何允許訪問每條路由?

+0

這是一個常見問題,主要問題是您的服務器路由請求。我不知道Shiro是如何工作的,但是嘗試在你的後端服務器內部重定向用於角度應用的路由,以便始終返回你的index.html。 –

回答

0

這可能是服務器端問題(不是Shiro)。首先要檢查的是如果您使用的是HTML5模式(聽起來像是基於您的問題)。如果你是你必須處理角路徑(並將它們轉發到你的index.html頁面)

你可以使用rewrite servlet來處理這個。這裏有一個example of this

有幾種不同的方式來處理轉發,你也可以只寫一個簡單的servlet或過濾器。

+0

我運行了重寫servlet,但由於我的項目運行在較舊版本的Java上,因此存在一些不兼容問題。我最終使用了[HashLocationStrategy](https://angular.io/docs/ts/latest/api/common/index/HashLocationStrategy-class.html)。這會在項目名稱後加上#來區分其子項。我相信你的答案也會起作用。如果您可以包含一個簡單的servlet /過濾器示例,我將贊成。 – ToDo

相關問題