2016-04-29 56 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 ---) –