簡體   English   中英

ZF2:定義URL http或https

[英]ZF2: Define URL http or https

這是我的問題。 我的應用程序中有幾個使用SSL的頁面,例如lggin頁面。 當我進入主頁(沒有SSL)時,視圖創建的每個鏈接(href = $ this-> url(...))都是純HTML,甚至是登錄頁面。 另一方面,當我進入登錄頁面時,所有其他鏈接都顯示為https。

在控制器中,我操縱頁面是否使用SSL,這是可以的。 但是我想在用戶瀏覽網站時為用戶顯示正確的鏈接,對於SSL頁面顯示https,對於非SSL頁面顯示http。

謝謝。

首先,如果您有HTTPS,則應在任何頁面上使用它。 當您有一些可通過HTTPS訪問的頁面,而另一些則無法訪問時,這確實違反了信任網絡。 當然,您可能在某些頁面上強制使用HTTPS(因此沒有HTTP),但反之亦然總是一個壞主意。

話雖如此,您可以創建一個scheme路由。 使用該方案,您可以在某些路由上指定HTTPS:

'secure' => [
  'type'    => 'scheme',
  'options' => [
    'scheme'   => 'https',
    'defaults' => [
      // the usual stuff
    ],
  ],

  'may_terminate' => false,
  'child_routes'  => [
    // all your https routes here
  ],
],

因為其中一些“安全”路由可能是在供應商級別定義的(例如,您使用ZfcUser),所以可以使用路由的“原型”。 例如,所有ZfcUser路由只能通過HTTPS訪問。 ZfcUser的“主要”路線是zfcuser

'router' => [
  'prototypes' => [

    // Define "secure" prototype to add to routes
    'secure' => [
      'type'    => 'scheme',
      'options' => ['scheme': 'https'],
    ],
  ],

  // Apply the scheme route to ZfcUser
  'routes' => [
    'zfcuser' => [
      'chain_routes' => ['secure'],
    ],
  ],
],

原型設計“准備”到zfcusersecure路徑。 因此,這使zfcuser及其所有子級成為secure的子級路由。 因此,所有zfcuser路由均使用HTTPS定義。

到此為止:如果您現在組裝路線,它們將自動獲得HTTPS。 在第一個示例的secure路由內進行路由login ,您可以通過$this->url('secure/login');獲取URL $this->url('secure/login');

在第二種情況下(原型),您無需提及原型,只需使用$this->url('zfcuser'); 用戶的路線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM