我正在使用带有游戏框架的角度。我要求的网址类似于“https://example.com/#/dashboard”。
我尝试使用pac4j和WSO2登录,但问题是登录后我无法保留URL。一旦登录,它就会导航到默认页面。
所以我打算保存请求的网址(https://example.com/#/dashboard),以便在成功登录后我可以重定向到请求的网页
但是我已经尝试过request.path(),request.uri(),request.queryString('')等等。但我无法在Play服务器中获取该请求的url。 我可以通过request.hostName()获取主机名(“example.com”)。我怎样才能得到“/#/ dashboard”。你能帮助我吗?
答案 0 :(得分:0)
我自己找到了解决方案。 #'#'之后的参数url中的符号仅用于路由,因此我们的html只能读取和路由,服务器无法获取该值,因此pac4j无法使用此参数存储和重定向url。为了使这件事有效,我们必须删除哈希#'#'来自网址。以下链接将帮助您做到这一点。
https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag
如果您正在使用Yeoman& generator-angular做这个额外的步骤
https://www.npmjs.com/package/connect-modrewrite
我正在使用Yeoman&咕噜,所以我换了下面的东西。 在package.json中添加此依赖项" connect-modrewrite" 并在grunt中添加以下livereload
.....
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
modRewrite(['^[^\\.]*$ /index.html [L]']), // Only this line need to be added
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
.....
参考:http://jjt.io/2013/11/16/angular-html5mode-using-yeoman-generator-angular/ 但旧版本的此链接,新版本使用上面提到的链接(https://www.npmjs.com/package/connect-modrewrite)