2016-04-29 17 views
0

这是我第一次尝试子系统,大部分情况都进展顺利。在会话结束时,我无法将子系统站点中的用户重定向到主要顶级站点。FW/1子系统 - 重定向到顶部网站

这里可能是网站结构,它很标准。

  1. 我已经从我的登录的mainSite
  2. 基地我重定向到相应的子系统,即(subsite1的,subSite2)
  3. 当我的会话结束我不想被重定向到mainSite.login登录,而是将我重定向到subSite1.login。

我的问题是,我如何将用户从子系统站点重定向到mainSite登录?

这是我的网站结构。

mainSite 
-assets 
-contorllers 
    -login.cfc 
    -security.cfc 
-framework 
-layouts 
-model 
-subsystems 
    -subSite1 
     -controllers 
     -layouts 
     -model 
     -views 
      -main 
       -default.cfm 
     application.cfc 
     index.cfm 
    -subSite2 
     ... 
-views 
    -login 
     -default.cfm (login form) 
application.cfc 
index.cfm 

/mainSite/controllers/security.cfm直接从FW/1下载,只需稍作更改即可满足我的需求。我尝试更新authorize()函数中的重定向,但没有运气。提前感谢您的见解。

component { 

function init(fw) { 
    variables.fw = fw; 
} 

function session(rc) { 
    // set up the user's session 
    session.auth = {}; 
    session.auth.isLoggedIn = false; 
    session.auth.fullname = 'Guest'; 
} 

function authorize(rc) { 
    // check to make sure the user is logged on 
    if (not(structKeyExists(session, "auth") && session.auth.isLoggedIn) && !listfindnocase('login', variables.fw.getSection()) && !listfindnocase('main.error', variables.fw.getFullyQualifiedAction())) { 
    variables.fw.redirect('login'); 
    } 
} 

} 

回答

1

您需要提供基本上等于完全限定的重定向的内容。如果您的默认(“顶级”)子系统被称为“主”,默认部分被称为“主”,那么这将是这样的:

variables.fw.redirect('main:main.login'); 
+0

嗨亚当,感谢您的快速回复。不幸的是,这确实奏效,我得到了这个错误。 “此页面无法显示”。对不起,如果我不清楚我的问题。我已经添加了我的网站结构,所以我可以更好地解释。 我想在用户从subSite1(/ mainSite/subsystems/subSite1/main)重定向到mainSite(/ mainSite/login)登录页面过期时。 – user752746

+0

在我看来,你不明白子系统是如何工作的。你应该从阅读文档开始:http://framework-one.github.io/documentation/using-subsystems.html –

+0

你说得对,这是我的第一个子系统应用程序,我试图围绕FW/1子系统。鉴于我上面的网站结构,是否所有网站都需要(应该)在子系统文件夹内?感谢您的见解! – user752746

-1

我能够通过使用位置,以获得期望的结果( )。

//variables.fw.redirect('login'); 
location(url="/mainSite/login"); 

我想更新此答案,以防其他人遇到相同的情况。 Sean Corfield在FW/1 Google小组提供了答案。这里的链接https://groups.google.com/forum/#!topic/framework-one/0g7TWQLg3Hs

variables.fw.redirect(':login'); 
+0

这可能“起作用”,但与您正在使用的工具无关 - 除非此“顶级”本身不属于同一FW/1应用程序。它可能应该是。它可能应该是主/默认子系统。但是,如果不是,那么只有那样,你的解决方案才是正确的。 –

+0

“顶级”是同一个FW/1应用程序的一部分。 – user752746

+0

这是值得的,如果这是一个有效的路径,你可以在FW/1中重定向到它:'variables.fw.redirectCustomURL(“/ mainSite/login”);'看到这里:[FW/1 Docs redirectCustomURL( )](http://framework-one.github.io/documentation/reference-manual.html#public-void-function-redirectcustomurl-string-uri-string-preserve--none-string-statuscode--302-string -header ---) –