SlideShare uma empresa Scribd logo
1 de 13
WEBアプリ開発
実践Tips共有会
Spring Securityを使った一般的なログイン機構の実装
方法
今回のサンプルでは、Ajaxによってログイン処理を行い、認証
方法はデータベースに保存されているユーザーIDとパスワード
との突合によるものとします。
Spring Securityを使った一般的なログイン機構の実装
方法
ポイント
•@EnableWebSecurity
•フォーム認証を有効化
•デフォルトのログインフォームを抑制
•ログインの成功/失敗でJSONを返す
•DB or APIのユーザー情報で認証
•ユーザーの権限に応じた表示切り分け
Springでメールを送る方法
ポイント
•spring-boot-starter-mail(JavaMailSenderと
MimeMessageHelper)を利用してシンプルかつ日本語対応
•テンプレートエンジン(Thymeleaf)はBean定義の順序と
Bean定義名に気をつける
•開発環境のメール送信は、docker環境でmailcatcherを使う
自動テストでデータベースにメモリDBを使う手順
データベース接続を伴うテストコードの実行時にメモリDB(
H2Database)を使うと、早くて安上がりですね。
H2DatabaseはMySQLモードやPostgreSQLモードなどを搭載して
いるので、テストコードで利用するのに最適。
自動テストでデータベースにメモリDBを使う手順
ポイント
•テスト用の設定を作成(application-test.propertiesとか)
•テスト用の抽象クラスを用意して、プロファイルを固定
•テスト用のタイムゾーン設定を忘れずに。
•おまけ:MySQLもdocker使うと簡単
リソースファイルのキャッシュとバージョニングをい
い感じにする手順
検索エンジンが重要なファクターになるプロダクトだと
GoogleのPageSpeed Insightsとかで高得点を目指したい。
ポイント
•WebMvcConfigurerの実装を提供
•静的リソースをハンドリングする際に、キャッシュとバージ
ョニングの設定を追加
•Viewエンジンで静的リソースパスをバージョン付きパスにす
るためのフィルタを設定
コントローラーでのバリデーションエラーをハンドリ
ングする方法
ポイント
•フォーム送信の場合は、Controllerにformの@ModelAttribute
なメソッドを1つ(他に@ModelAttributeは付けない)
•formの変数名はクラス名に合わせるのが安定(Controller上も
Thymeleaf上も)
•API実装の場合は2パターンのいずれか
•フォーム送信と同様、メソッド内に閉じた処理
•@RestControllerAdviceでResponseEntityExceptionHandler
を継承して、グローバルに共通にハンドリングする
materialize-cssをwebpack環境で使う方法
ポイント
•expose-loaderでjQueryを解決してあげる(実行時エラー)
•MaterializeCssのフォントパス設定とWebpackのローダー設定
を組み合わせてフォントを解決してあげる(コンパイルエラ
ー)
•scssファイルを作って、materialize.scssをimportする
•xxx-cliで生成されたWebpack設定ファイルを理解せずに使い
続けると後で苦しむ
Vue.jsでChart.js使ってグラフを描画する手順
ポイント - Vue.jsのコンポーネント
•単一コンポーネントファイル(*.vue)で書いてvue-loaderを噛
ませる
•但し、scriptファイルは別ファイルにしてインポートしたほ
うがIDEフレンドリー
•babel-loaderを噛ませれば、vue-loaderが勝手にES6を解釈し
てくれる
Vue.jsでChart.js使ってグラフを描画する手順
ポイント - Vue.jsのコンポーネント(続き)
•クラススタイルで書く
•vue-class-componentを使う
•vue-loaderが勝手にやってるbabel-loaderの利用部分をカス
タムする必要がある
Vue.jsでChart.js使ってグラフを描画する手順
ポイント - Chart.jsを使う
•描画はvueのライフサイクルを意識(mounted以降でやる)
•描画対象の特定は、id指定ではなく、$refs経由でcanvasのコ
ンテキストを取得&指定する
•データ更新は、vueのwatchにてchat.jsのupdate()をコールす
る
セッション情報をRedisにJSON形式で格納する手順
ポイント
•@EnableRedisHttpSessionでSpring Session + Redisを有効化(
Redis保存期間を指定)
•設定ファイルでsessionのストア先を設定
•Redis:springSessionDefaultRedisSerializer
•Cookie:CookieSerializer
•確認はMedisが便利

Mais conteúdo relacionado

Semelhante a Webアプリ開発実践tips共有会

Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編なべ
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010stomita
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVCjz5 MATSUE
 
MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!p1us2er0
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Yoshi Nagase
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックJun-ichi Sakamoto
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発lalha
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-publicAmazon Web Services Japan
 
AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜Yuki Hirai
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Hideki Hashizume
 
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形Yusaku Watanabe
 
[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティde:code 2017
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方Yuichi Hattori
 

Semelhante a Webアプリ開発実践tips共有会 (20)

Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
20050917
2005091720050917
20050917
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
Jsug 20160422 slides
Jsug 20160422 slidesJsug 20160422 slides
Jsug 20160422 slides
 
MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!
 
Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2Rablock applicatin dev_guide_v1.2
Rablock applicatin dev_guide_v1.2
 
20111203
2011120320111203
20111203
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
 
AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜AWS as MBaaS 〜APIキーとかの話〜
AWS as MBaaS 〜APIキーとかの話〜
 
20061125
2006112520061125
20061125
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形
WEB開発を加速させる。アジャイル開発に最適なデータ構造とORマッパの形
 
Security hub workshop
Security hub workshopSecurity hub workshop
Security hub workshop
 
[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方Pythonを使った簡易診断スクリプトの作り方
Pythonを使った簡易診断スクリプトの作り方
 

Webアプリ開発実践tips共有会