9月15日

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です