SpringMVCにおけるユーザー認証
SpringMVCでは、spring-securityを使ってユーザー認証を行う。
そのために、pom.xmlに以下の内容を追加する。
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.0.1.RELEASE</version>
</dependency>
web.xmlの最後にフィルターを追加する。
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
src/main/resources/spring フォルダに、spring-security.xml を作成する。
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.0.xsd">
<http pattern="/" security="none"/>
<http pattern="/index.jsp" security="none"/>
<http auto-config="true" >
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<form-login />
<logout />
</http>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver" />
<beans:property name="url" value="jdbc:hsqldb:hsql://localhost/mydata" />
<beans:property name="username" value="sa" />
<beans:property name="password" value="" />
</beans:bean>
<!-- ユーザとROLEを定義 -->
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT user_name, password, enabled FROM users WHERE user_name = ?"
authorities-by-username-query="SELECT user_name, role FROM users WHERE user_name = ?" />
</authentication-provider>
</authentication-manager>
</beans:beans>
ユーザーとユーザの権限を管理するためのテーブルを作成する。
CREATE TABLE users(
user_id bigint NOT NULL identity,
user_name varchar(50) NOT NULL,
password varchar(50) NOT NULL,
enabled tinyint NOT NULL,
role varchar(100) NOT NULL
);
USERSテーブルにテスト用のユーザーを登録する。
INSERT INTO users ( user_name , password , enabled, role)
VALUES ( 'taro', 'abcd' , 1, 'ROLE_USER' );
チーム開発
チームで開発するWebアプリケーションを決めよう!
- 2ちゃんねる
- Twitter
- LINE
- Wiki
- EC(ネットショップ)
以下のことを決めよう。
- 作成するサービスを決める(候補を出す)
- チーム名を決める
- リーダーを決める
- サービスの名前(プロジェクト名)を決める
- 基本的な画面遷移図(ロバストネス図)を作成する
ロバストネス図は、astah community で作れる。
チーム1
チーム名:やりたい
リーダー:西田
サービス名:やりたま
プロジェクト名:Yaritama
チーム2
チーム名:ナイトプール
リーダー:中尾
サービス名: 写真共有アプリ
プロジェクト名: PhotoSharing
チーム3
チーム名:ボビーオロゴン
リーダー:前田
サービス名:診断メーカー
プロジェクト名:ShindanMaker
チーム4
チーム名:ママ、早く!
リーダー:山本
サービス名:掲示板
プロジェクト名:3chan
チーム5
チーム名:ゲームウィキ麻生支部
リーダー:宮崎
サービス名:ゲームウィキ
プロジェクト名:GameWiki