Ch11-2 : Setting
[Setting]
這個小節,我們會根據前個小節的資料表(Table)設計。
這段落會按照順序,介紹整個登入相關檔案,與他們的目錄架構。之後第三個小節會介紹每隻程式所負責的用途,來完成我們的登入功能。
build.sbt
這次我們需要新增Spring的aop jar檔,協助我們去使Aop相關技術。
note:這邊要特別注意一點是,Play本身部份程式有使用到Spring相關jar檔,這邊建議使用的版本跟您的Play的Spring版本一致,減少可能發生的問題。
EX:Play 2.5.4使用的Spring的版本是4.2.4.RELEASE
...
// Spring Aop
"org.springframework" % "spring-aop" % "4.2.4.RELEASE"
....
Html
登入頁面。
app
└ views
└ web
└ loginSignup
└ login.scala.html <-登入頁面
pojo與services
會員登入,需要新增相關的pojo類別與調整現有services,來完成登入功能。
app
└pojo
└web
└request
└AuthRequest.java <--- 會員登入請求
└ServerCache.java <--- 伺服器暫存資料
UserCookie.java <--- 瀏覽器使用者的Cookie資料
UserRole.java <--- 登入的使用者角色類型
UserSession.java <--- 對應到表單紀錄的Session資料
└services
└Impl
└WebServiceImpl.java <--- 實做WebService的新功能
└WebService.java <--- 新增UserSession的新增資料與查詢功能
└conf
└services
└WebService.xml <--- 新增user_session相關SQL
Aop
Aop是一種設計理念,全名為Aspect-Oriented Programming,它可以協助我們去掌控這個方法執行前,執行中,執行後等等,需要做什麼特別處理,這邊先大致知道Aop相關檔案程式擺放的目錄即可。
app
└annotation
└AuthCheck.java <---Java註解,可以把它在方法身上,執行登入檢查
└aop
└advice
└BeforeAndAfterAdvice.java <---共用的Before與After 的Advice
└AfterBlocker.java <---執行後動作
AuthBlocker.java <---執行檢查
BeforeBlocker.java <---執行前動作
CommonBlocker.java <---共用Aop套件程式
└modules
└AopModule.java <---Aop的Module,讓Play一執行時,可以讓我們Aop代理程式常駐
└utils
└Utils_Session.java <---公用Session程式,處理一些Session整理與轉換
└enc
└AESEncrypter.java <---ASE加密程式
application.conf
我們Aop採用modules方式載入,需要在對應的conf設定要啟用這個服務。
...
play.modules.enabled += "modules.AopModule"
...
app/controller
WebController.java,新增登入檢查。
@AuthCheck
public Result doLogin(){
...
return ok("登入成功");
}
// 登出
public Result logout(){
new Utils_Session().clearClientCookie(response());
return redirect(controllers.routes.WebController.index().url());
}
routes
針對我們登入與登出,需要對應的執行網址。
# http://127.0.0.1:9000/web/login
GET /web/login controllers.WebController.login()
# http://127.0.0.1:9000/web/login
POST /web/login controllers.WebController.doLogin()
# http://127.0.0.1:9000/web/logout
POST /web/logout controllers.WebController.logout()
[Final]
重頭戲要開始了,挑戰從下個小節開始!