Submit Search
Upload
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
•
Download as PPTX, PDF
•
0 likes
•
129 views
Kiyoshi Sawada
Follow
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
Read less
Read more
Software
Report
Share
Report
Share
1 of 12
Download now
Recommended
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
Kiyoshi Sawada
Web components v1 intro
Web components v1 intro
Kenneth Rohde Christiansen
Crud secara simultan ala php myadmin
Crud secara simultan ala php myadmin
Rizal Di Caprio
Ejemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuario
ronaldtoscano18
Meteor로 만드는 modern web application
Meteor로 만드는 modern web application
Jaeho Lee
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Mario Jorge Pereira
Actividad 1 pago de factura al proveedor
Actividad 1 pago de factura al proveedor
Romi Flores
лр1
лр1
SvyatoslavPozhydaev
Recommended
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
Kiyoshi Sawada
Web components v1 intro
Web components v1 intro
Kenneth Rohde Christiansen
Crud secara simultan ala php myadmin
Crud secara simultan ala php myadmin
Rizal Di Caprio
Ejemplo con control de permisos o niveles de usuario
Ejemplo con control de permisos o niveles de usuario
ronaldtoscano18
Meteor로 만드는 modern web application
Meteor로 만드는 modern web application
Jaeho Lee
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
Mario Jorge Pereira
Actividad 1 pago de factura al proveedor
Actividad 1 pago de factura al proveedor
Romi Flores
лр1
лр1
SvyatoslavPozhydaev
jQuery sans jQuery
jQuery sans jQuery
goldoraf
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
Agus Haryanto
Mantto con vb2010
Mantto con vb2010
tihuilo
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuu
iswan_di
Blog 3
Blog 3
iswan_di
React - podsumowanie z placu boju
React - podsumowanie z placu boju
Radosław Mejer
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
Darwin Durand
Tools20121015
Tools20121015
Frans Van Assche
twMVC#20 | 前端視覺化實戰 - D3.js
twMVC#20 | 前端視覺化實戰 - D3.js
twMVC
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
Kiyoshi Sawada
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
Kiyoshi Sawada
EWD.js アーキテクチャー
EWD.js アーキテクチャー
Kiyoshi Sawada
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
Kiyoshi Sawada
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
Kiyoshi Sawada
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
Kiyoshi Sawada
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
Kiyoshi Sawada
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
Kiyoshi Sawada
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
Kiyoshi Sawada
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
Kiyoshi Sawada
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
Kiyoshi Sawada
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
Kiyoshi Sawada
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
Kiyoshi Sawada
More Related Content
What's hot
jQuery sans jQuery
jQuery sans jQuery
goldoraf
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
Agus Haryanto
Mantto con vb2010
Mantto con vb2010
tihuilo
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuu
iswan_di
Blog 3
Blog 3
iswan_di
React - podsumowanie z placu boju
React - podsumowanie z placu boju
Radosław Mejer
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
Darwin Durand
Tools20121015
Tools20121015
Frans Van Assche
twMVC#20 | 前端視覺化實戰 - D3.js
twMVC#20 | 前端視覺化實戰 - D3.js
twMVC
What's hot
(9)
jQuery sans jQuery
jQuery sans jQuery
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
Mantto con vb2010
Mantto con vb2010
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuu
Blog 3
Blog 3
React - podsumowanie z placu boju
React - podsumowanie z placu boju
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
PROYECTO PRUEBA DE CONEXIONES (Mantenimiento)
Tools20121015
Tools20121015
twMVC#20 | 前端視覺化實戰 - D3.js
twMVC#20 | 前端視覺化實戰 - D3.js
Viewers also liked
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
Kiyoshi Sawada
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
Kiyoshi Sawada
EWD.js アーキテクチャー
EWD.js アーキテクチャー
Kiyoshi Sawada
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
Kiyoshi Sawada
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
Kiyoshi Sawada
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
Kiyoshi Sawada
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
Kiyoshi Sawada
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
Kiyoshi Sawada
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
Kiyoshi Sawada
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
Kiyoshi Sawada
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
Kiyoshi Sawada
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
Kiyoshi Sawada
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
Kiyoshi Sawada
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
Kiyoshi Sawada
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
Kiyoshi Sawada
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
Kiyoshi Sawada
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
Kiyoshi Sawada
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
Kiyoshi Sawada
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
Viewers also liked
(19)
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD.js アーキテクチャー
EWD.js アーキテクチャー
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
More from Kiyoshi Sawada
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
Kiyoshi Sawada
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
Kiyoshi Sawada
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
Kiyoshi Sawada
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
Kiyoshi Sawada
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
Kiyoshi Sawada
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
Kiyoshi Sawada
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
Kiyoshi Sawada
EWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービス
Kiyoshi Sawada
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
Kiyoshi Sawada
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
Kiyoshi Sawada
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
Kiyoshi Sawada
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
Kiyoshi Sawada
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
Kiyoshi Sawada
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
Kiyoshi Sawada
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
Kiyoshi Sawada
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
Kiyoshi Sawada
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
Kiyoshi Sawada
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
Kiyoshi Sawada
More from Kiyoshi Sawada
(18)
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
1.
EWD 3 トレーニング・コース #13 全てをひとつにまとめて ewd-xpressで稼働させてみる M/Gateway
Developments Ltd. Rob Tweed 訳: 日本ダイナシステム株式会社 嶋 芳成 GT.M版編集: 澤田 潔 ※ 本稿オリジナルはCache’向けとして編纂
2.
すべてをひとつにまとめて動かす • これ以降の例題のコードを切り貼りしてください • それを動かしてみてください
! 2016/9/30 EWD 3 トレーニング・コース #13 2
3.
単純なログインの例 (index.html) <html> <head> <title>Demo ewd-xpress
application</title> <link href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" rel="stylesheet" /> </head> <body> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toaster.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script src="/ewd-client.js"></script> <script src="app.js"></script> <table id="loginForm"> <tr> <td>Username:</td> <td><input type="text" id="username" /></td> </tr> <tr> <td>Password:</td> <td><input type="password" id="password" /></td> </tr> <tr> <td colspan="2"> <button id="loginBtn">Login</button> </td> </tr> </table> <br /><br /> <button id="testBtn">Click Me</button> </body> </html> 2016/9/30 EWD 3 トレーニング・コース #13 3
4.
単純なログインの例 (app.js) $(document).ready(function() { EWD.log
= true; EWD.on('ewd-registered',function() { EWD.on('error',function(responseObj) { toastr.error(responseObj.message.error); }); EWD.on('intermediate',funciton(responseObj) { toaster.info('intermediate response:' + responseObj.message.date); }); $('#testBtn').on('click',function(e){ var message= {type: 'testButton'}; EWD.send(message, function(responseObj) { if(!responseObj.message.error) { toastr.info(JSON.stringify(responseObj.message)); } }); }); $('#loginBtn').on('click', function(e) { var username = $('#username').val(); if (username === '') { toastr.error('You must enter a username'); return; } var password = $('#password').val(); if (password === '') { toaster.error('You must enter a password'); return; } var message = { type: 'login', params: { username: username, password: password } }; EWD.send(message.function(responseObj) { if (!responseObj.message.error) $('#loginForm').hide(); }); }); }); EWD.start('demo1', $, io); }); 2016/9/30 EWD 3 トレーニング・コース #13 4
5.
単純なログインの例 (demo1.js) function checkLogin(username,password){ //現状はハードコード版 if
(username !== 'rob') return {error: 'Invalid username'}; if (password !== 'secret') return {error: 'Invalid password'}; return {ok: true} } module.export = { handlers: { login: function(messageObj, session, send, finished){ if (session.authenticated) { finished({error: 'You are already logged in'}); return; } var username = messageObj.params.username; if (username === '') { finished({error: 'You must enter a username'}); return; } var password = messageObj.params.password; if (password === '') { finished({error: 'You must enter a password'}); return; } var status = checkLogin(username,password); if (status.ok) { session.authenticated = true; finished({ok: true}); } else { finished({error: status.error}); } }, testButton: function(messageObj, session, send, finished) { if (!session.authenticated) { finished({error: 'You are not yet logged in!'}); return; } send({ type: 'intermediate', foo: 'bar', date: new Date().toString() }); finished({ ok: "testButton message was processed successfully!" }); } } }; 2016/9/30 EWD 3 トレーニング・コース #13 5
6.
ログアウトを加え、さらに洗練させたものにします 2016/9/30 EWD 3
トレーニング・コース #13 6
7.
ログインの例 v2 (index.html) <html> <head> <title>Demo
ewd-xpress application</title> <link href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" rel="stylesheet" /> </head> <body> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toaster.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script src="/ewd-client.js"></script> <script src="app.js"></script> <table id="loginForm"> <tr> <td>Username:</td> <td><input type="text" id="username" /></td> </tr> <tr> <td>Password:</td> <td><input type="password" id="password" /></td> </tr> <tr> <td colspan="2"> <button id="loginBtn">Login</button> </td> </tr> </table> <br /><br /> <button id="testBtn">Click Me</button> <br /><br /> <button id ="logoutBtn">Logout</button> </body> </html> 2016/9/30 EWD 3 トレーニング・コース #13 7
8.
ログインの例 v2 (app.js) $(document).ready(function()
{ EWD.log = true; //ユーザーが安全にログインできるようになるまでフォームを隠す $('#loginForm').hide(); $('#logoutBtn').hide(); EWD.on('ewd-registered',function() { EWD.on('error',function(responseObj) { toastr.error(responseObj.message.error); }); EWD.on('intermediate',funciton(responseObj) { toaster.info('intermediate response:' + responseObj.message.date); }); $('#testBtn').on('click',function(e){ var message= {type: 'testButton'}; EWD.send(message, function(responseObj) { if(!responseObj.message.error) { toastr.info(JSON.stringify(responseObj.message)); } }); }); $('#loginBtn').on('click', function(e) { var username = $('#username').val(); if (username === '') { toastr.error('You must enter a username'); return; } var password = $('#password').val(); if (password === '') { toaster.error('You must enter a password'); return; } var message = { type: 'login', params: { username: username, password: password } }; EWD.send(message.function(responseObj) { if (!responseObj.message.error) { $('#loginForm').hide(); $('#logoutBtn').show() } }); }); $(‘#logoutBtn).on(‘click’, function(e) { EWD.disconnectSocket(); }); EWD.on(‘socketDisconnected’, function() { tostr.info(‘You have been logged out’); setTimeout(function() { //新しくきれいなセッションを開始するために index.html をリロードする location.reload(); },1000); }); //安全にログインできるようになったのでフォームを表示する $(‘#loginForm’).show(); }); EWD.start('demo1', $, io); }); 2016/9/30 EWD 3 トレーニング・コース #13 8
9.
ログインの例 v2 (demo1.js) function
checkLogin(username,password){ //現状はハードコード版 if (username !== 'rob') return {error: 'Invalid username'}; if (password !== 'secret') return {error: 'Invalid password'}; return {ok: true} } module.export = { handlers: { login: function(messageObj, session, send, finished){ if (session.authenticated) { finished({error: 'You are already logged in'}); return; } var username = messageObj.params.username; if (username === '') { finished({error: 'You must enter a username'}); return; } var password = messageObj.params.password; if (password === '') { finished({error: 'You must enter a password'}); return; } var status = checkLogin.call(this,username,password); if (status.ok) { session.authenticated = true; session.timeout = 3600; session.updateExpiry(); finished({ok: true}); } else { finished({error: status.error}); } }, testButton: function(messageObj, session, send, finished) { if (!session.authenticated) { finished({error: 'You are not yet logged in!'}); return; } send({ type: 'intermediate', foo: 'bar', date: new Date().toString() }); finished({ ok: "testButton message was processed successfully!" }); } } }; 2016/9/30 EWD 3 トレーニング・コース #13 9 セッション・タイ ムアウトと終了 時刻を更新
10.
ログインの例 v2 (demo1.js) function
checkLogin(username,password){ //現状はハードコード版 if (username !== 'rob') return {error: 'Invalid username'}; if (password !== 'secret') return {error: 'Invalid password'}; return {ok: true} } module.export = { handlers: { login: function(messageObj, session, send, finished){ if (session.authenticated) { finished({error: 'You are already logged in'}); return; } var username = messageObj.params.username; if (username === '') { finished({error: 'You must enter a username'}); return; } var password = messageObj.params.password; if (password === '') { finished({error: 'You must enter a password'}); return; } var status = checkLogin.call(this,username,password); if (status.ok) { session.authenticated = true; session.timeout = 3600; session.updateExpiry(); finished({ok: true}); } else { finished({error: status.error}); } }, testButton: function(messageObj, session, send, finished) { if (!session.authenticated) { finished({error: 'You are not yet logged in!'}); return; } send({ type: 'intermediate', foo: 'bar', date: new Date().toString() }); finished({ ok: "testButton message was processed successfully!" }); } } }; 2016/9/30 EWD 3 トレーニング・コース #13 10 call を使うので this は checkLogin() 内 の文脈のことです
11.
ログインの例 v2 (demo1.js) function
checkLogin(username,password){ var status = this.db.function({ function: ‘login^security’, argumentd:[username,password] }); if (status == 1) return {ok: true}; return {error: ‘Invalid login attempt’}; } module.export = { handlers: { login: function(messageObj, session, send, finished){ if (session.authenticated) { finished({error: 'You are already logged in'}); return; } var username = messageObj.params.username; if (username === '') { finished({error: 'You must enter a username'}); return; } var password = messageObj.params.password; if (password === '') { finished({error: 'You must enter a password'}); return; } var status = checkLogin.call(this,username,password); if (status.ok) { session.authenticated = true; session.timeout = 3600; session.updateExpiry(); finished({ok: true}); } else { finished({error: status.error}); } }, testButton: function(messageObj, session, send, finished) { if (!session.authenticated) { finished({error: 'You are not yet logged in!'}); return; } send({ type: 'intermediate', foo: 'bar', date: new Date().toString() }); finished({ ok: "testButton message was processed successfully!" }); } } }; 2016/9/30 EWD 3 トレーニング・コース #13 11 このようにしてLogin処 理に旧来の MUMPS/Cachéの関 数を呼び出すことができ ます
12.
ログインの例 v2 (demo1.js) function
checkLogin(username,password){ var auth = new this.documentStore.DocumentNode (‘authentication’); if (‘auth.$(username).exists) return {error: ‘Invalid username’}; if (‘auth.$(username),$(password).value === password) return {ok: ‘true’}; return {error: ‘Invalid password’}; } module.export = { handlers: { login: function(messageObj, session, send, finished){ if (session.authenticated) { finished({error: 'You are already logged in'}); return; } var username = messageObj.params.username; if (username === '') { finished({error: 'You must enter a username'}); return; } var password = messageObj.params.password; if (password === '') { finished({error: 'You must enter a password'}); return; } var status = checkLogin.call(this,username,password); if (status.ok) { session.authenticated = true; session.timeout = 3600; session.updateExpiry(); finished({ok: true}); } else { finished({error: status.error}); } }, testButton: function(messageObj, session, send, finished) { if (!session.authenticated) { finished({error: 'You are not yet logged in!'}); return; } send({ type: 'intermediate', foo: 'bar', date: new Date().toString() }); finished({ ok: "testButton message was processed successfully!" }); } } }; 2016/9/30 EWD 3 トレーニング・コース #13 12 あるいは Authentication ドキュメ ントにアクセスすることもできます
Download now