2017-02-04 187 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

相关问题