<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 170  文章 - 536  trackbacks - 0
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    我參與的團隊

    隨筆分類(103)

    搜索

    •  

    積分與排名

    • 積分 - 415102
    • 排名 - 135

    最新評論

    閱讀排行榜

    因為有一個 Struts2 網(wǎng)站發(fā)布,需要整合一個論壇來使用,公司的一個項目過去曾經(jīng)整合過一個英文論壇,但似乎不能滿足我們的需求,需要找一個成熟穩(wěn)定的中文論壇,與我們的系統(tǒng)結(jié)合。

    最終選擇了 Discuz 作為我們的論壇系統(tǒng),主要是因為它提供了一套可用的 Passport API,來直接與我們現(xiàn)有系統(tǒng)進行整合。

    下面摘錄 Discuz 文檔中的內(nèi)容來說明整合原理,隨后的幾篇中,將詳細(xì)描述具體的整合過程。

    假設(shè)已設(shè)置如下變量或參數(shù)

    • 掛接 Discuz! Passport 的應(yīng)用程序假設(shè)為一套 PHP 語言編寫的 CMS 系統(tǒng)
    • Discuz! 的 URL 為 http://www.myforums.com
    • 應(yīng)用程序的 URL 為 http://www.mywebsite.com
    • 應(yīng)用程序的注冊頁面為 http://www.mywebsite.com/register.php
    • 應(yīng)用程序的登錄頁面為 http://www.mywebsite.com/login.php?action=login
    • 應(yīng)用程序的退出頁面為 http://www.mywebsite.com/login.php?action=logout

    開啟通行證后的用戶登錄流程

    • 如果用戶在論壇點擊“登錄”,則轉(zhuǎn)向到事先設(shè)置好的應(yīng)用程序登錄頁面(http://www.mywebsite.com/login.php?action=login),并在登錄頁面的 URL 中加入?yún)?shù) forward(加入 forward 后的鏈接例如 http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php),用于在登錄后將用戶導(dǎo)向到指定的 URL。

    • 應(yīng)用程序收到此請求后,按照慣例生成表單,并增加一個表單變量,將 GET 方式傳遞過來的 forward 參數(shù)通過表單進行傳遞。

    • 用戶在應(yīng)用程序的表單中填寫登錄信息,并提交到應(yīng)用程序的登錄驗證程序。應(yīng)用程序驗證用戶提交的用戶名和密碼的合法性:

      • 如果不通過:提示用戶名密碼錯誤,要求其返回上一頁重新填寫。

      • 如果通過,需要進行如下操作:

        • 設(shè)置自身 Cookie 或 Session,使得應(yīng)用程序自身處于登錄狀態(tài)。

        • 檢查表單中是否提交了 forward 變量,如有,則意味著登錄請求可能是由論壇而來,將此變量傳遞到后面的請求中。如沒有,自行生成 forward 變量,使得論壇登錄后能夠跳轉(zhuǎn)回到應(yīng)用程序中。

        • 通過 header('Location: http://www.myforums.com/api/passport.php?action=login&auth=xxx&forward=http://yyy&verify=zzz') 的方式,將登錄請求傳遞到論壇進行處理。其中 auth 用來將用戶信息與資料以特定的格式,加密傳遞給論壇,forward 用于告知論壇 Passport API 完成自身操作后轉(zhuǎn)向到的 URL 地址,verify 用于驗證前面兩個變量的有效性。auth、forward、verify 格式與結(jié)構(gòu)將在后面進行說明。


    • Discuz! Passport API 在接收到由應(yīng)用程序通過 header() 提交過來的請求后,進行如下操作:

      • 根據(jù) verify 判斷 auth 和 forward 變量是否合法,如合法則繼續(xù),否則終止。

      • 將 auth 根據(jù)既定算法解密,并還原成數(shù)組,數(shù)組的內(nèi)容與格式將在后面進行說明。根據(jù)數(shù)組中的內(nèi)容,檢查此用戶是否存在。如存在,則根據(jù)上述數(shù)組中的內(nèi)容 UPDATE 論壇中相應(yīng)的用戶資料。如不存在,則使用數(shù)組中的信息 INSERT 到論壇用戶資料表中。

      • 論壇設(shè)置 Cookie 或 Session,使得論壇自身處于登錄狀態(tài)。

      • 根據(jù)應(yīng)用程序反饋的 forward 值,通過 header('Location: http://xxx') 的形式將頁面跳轉(zhuǎn)到 forward 變量指定的 URL。


    • 至此,登錄流程結(jié)束

    開啟通行證后的用戶退出流程

    • 如果用戶在論壇點擊“退出”,則轉(zhuǎn)向到事先設(shè)置好的應(yīng)用程序退出頁面(http://www.mywebsite.com/login.php?action=logout),并在登錄頁面的 URL 中加入?yún)?shù) forward(例如 http://www.mywebsite.com/login.php?action=login&forward=http://www.myforums.com/index.php),用于在退出后將用戶導(dǎo)向到指定的 URL。

    • 應(yīng)用程序收到此請求后,清除自身 Cookie 或 Session,使得應(yīng)用程序自身處于非登錄狀態(tài)。

    • 檢查是否提交了 forward 變量,如有,則意味著登錄請求可能是由論壇而來,將此變量傳遞到后面的請求中。如沒有,自行生成 forward 變量,使得論壇登錄后能夠跳轉(zhuǎn)回到應(yīng)用程序中。

    • 通過 header('Location: http://www.myforums.com/api/passport.php?action=logout&forward=http://yyy&verify=zzz') 的方式,將退出請求傳遞到論壇進行處理。其中 forward 用于告知論壇 Passport API 完成自身操作后轉(zhuǎn)向到的 URL 地址,verify 用于驗證 forward 變量的有效性。forward、verify 格式與結(jié)構(gòu)將在后面進行說明。

    • Discuz! Passport API 在接收到由應(yīng)用程序通過 header() 提交過來的請求后,進行如下操作:

      • 根據(jù) verify 判斷 forward 變量是否合法,如合法則繼續(xù),否則終止。

      • 清楚論壇的 Cookie 或 Session,使得論壇自身處于非登錄狀態(tài)。

      • 根據(jù)應(yīng)用程序反饋的 forward 值,通過 header('Location: http://xxx') 的形式將頁面跳轉(zhuǎn)到 forward 變量指定的 URL。


    • 至此,退出流程結(jié)束。

    開啟通行證后的用戶注冊流程

    • 如果用戶在論壇點擊“注冊”,則轉(zhuǎn)向到事先設(shè)置好的應(yīng)用程序注冊頁面(http://www.mywebsite.com/register.php),并在注冊頁面的 URL 中加入?yún)?shù) forward(例如 http://www.mywebsite.com/register.php?forward=http://www.myforums.com/index.php),用于在注冊后將用戶導(dǎo)向到指定的 URL

    • 應(yīng)用程序收到此請求后,按照慣例生成表單,并增加一個表單變量,將 GET 方式傳遞過來的 forward 參數(shù)通過表單進行傳遞

    • 用戶在應(yīng)用程序的表單中填寫注冊信息,并提交到應(yīng)用程序的注冊驗證程序。應(yīng)用程序驗證用戶提交信息的完整性和合法性:

      • 如果不通過:提示其問題所在,要求其返回上一頁重新填寫

      • 如果通過,需要進行如下操作:

        • 將用戶資料插入到應(yīng)用程序自身用戶數(shù)據(jù)庫中

        • 設(shè)置自身 Cookie 或 Session,使得應(yīng)用程序自身處于登錄狀態(tài)

        • 檢查表單中是否提交了 forward 變量,如有,則意味著注冊請求可能是由論壇而來,將此變量傳遞到后面的請求中。如沒有,自行生成 forward 變量,使得論壇注冊后能夠跳轉(zhuǎn)回到應(yīng)用程序中

        • 通過 header('Location: http://www.myforums.com/api/passport.php?action=login&auth=xxx&forward=http://yyy&verify=zzz') 的方式,將注冊請求傳遞到論壇進行處理。其中 auth 用來將用戶信息與資料以特定的格式,加密傳遞給論壇,forward 用于告知論壇 Passport API 完成自身操作后轉(zhuǎn)向到的 URL 地址,verify 用于驗證前面兩個變量的有效性。auth、forward、verify 格式與結(jié)構(gòu)將在后面進行說明


    • Discuz! Passport API 在接收到由應(yīng)用程序通過 header() 提交過來的請求后,進行如下操作:

      • 根據(jù) verify 判斷 auth 和 forward 變量是否合法,如合法則繼續(xù),否則終止

      • 將 auth 根據(jù)既定算法解密,并還原成數(shù)組,數(shù)組的內(nèi)容與格式將在后面進行說明。根據(jù)數(shù)組中的內(nèi)容,檢查此用戶是否存在。如存在,則根據(jù)上述數(shù)組中的內(nèi)容 UPDATE 論壇中相應(yīng)的用戶資料。如不存在,則使用數(shù)組中的信息 INSERT 到論壇用戶資料表中

      • 論壇設(shè)置 Cookie 或 Session,使得論壇自身處于登錄狀態(tài)

      • 根據(jù)應(yīng)用程序反饋的 forward 值,通過 header('Location: http://xxx') 的形式將頁面跳轉(zhuǎn)到 forward 變量指定的 URL


    • 至此,注冊流程結(jié)束

      本部分中,加下劃線顯示的部分,是需要對您的應(yīng)用程序進行更改的部分,事實上,這部分更改會非常容易和方便。

    posted on 2007-08-11 17:30 steady 閱讀(3296) 評論(3)  編輯  收藏 所屬分類: Java

    FeedBack:
    # re: Struts2 整合 Discuz 論壇 (1) 2008-09-05 16:59 jackyrong
    有第2部分的文么?  回復(fù)  更多評論
      
    # re: Struts2 整合 Discuz 論壇 (1) 2008-11-12 10:19 thk
    這只是官方的Discuz! Passport copy來的啊
    請問博主有續(xù)集講解嗎?  回復(fù)  更多評論
      
    # re: Struts2 整合 Discuz 論壇 (1) 2011-03-27 14:09 openjweb
    我最關(guān)系的是這句:

    將 auth 根據(jù)既定算法解密

    請問怎么解密?uc.php中,dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);后,得到cookie值還原不出來用戶名和密碼。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 久久久久久免费视频| 亚洲国产精品乱码在线观看97| 中文字幕无码免费久久99| AAAAA级少妇高潮大片免费看| 亚洲一久久久久久久久| 精品日韩亚洲AV无码一区二区三区| 日本中文一区二区三区亚洲| 国产又大又粗又长免费视频| 麻豆精品不卡国产免费看| 九九九国产精品成人免费视频| 在线观看亚洲AV日韩A∨| 亚洲制服丝袜在线播放| 亚洲AV区无码字幕中文色| 国产成人精品亚洲精品| 四虎影在线永久免费观看| 成人免费无码大片A毛片抽搐| 2019中文字幕免费电影在线播放 | 国产成人精品免费视频大全麻豆 | 亚洲精品国偷自产在线| 无码不卡亚洲成?人片| 日韩成人免费aa在线看| 成人毛片手机版免费看| 免费H网站在线观看的| 免费A级毛片无码A∨| 久久免费区一区二区三波多野| 国产在线国偷精品免费看| www成人免费视频| 一区二区视频免费观看| 有码人妻在线免费看片| 手机永久免费的AV在线电影网| 老司机午夜性生免费福利| 黄网站色成年片大免费高清| 麻豆69堂免费视频| 又硬又粗又长又爽免费看| 亚洲阿v天堂在线2017免费| 久久一区二区三区免费| 永久免费AV无码网站国产 | 91麻豆精品国产自产在线观看亚洲| 亚洲女人被黑人巨大进入| 久久久青草青青国产亚洲免观 | 亚洲精品国产肉丝袜久久|