ユーザー認証処理

広告

ログイン画面で入力されたユーザー名とパスワードを、データベースで管理されているユーザー情報と照合してユーザーかどうかを認証する処理を行います。

実際の処理としてはユーザー管理用のテーブルをユーザー名とパスワードが一致するレコードがあるかどうかを検索して、あれば認証すると言う単純な処理を行います。成功した場合にはセッションにユーザーID、ロール、ユーザー名の情報をセッション変数として保存しておきます。

認証に失敗した場合は認証失敗と言う事が分かるようにセッション変数に値を設定してから再度ログインページへ戻しています。

作成したサーブレットは次の通りです。

LoginCheck1.java [HTMLで表示]

コンパイルして作成されたクラスファイルを「(root)¥WEB-INF¥classes¥」ディレクトリに配置します。

D:¥servlet-sample
   |
   +--schedule
       |
       +-- (top.html)
       |
       +-- WEB-INF
       |    |
       |    +-- classes
       |          |
       |          +-- (MonthView6.class)
       |          |
       |          +-- (NewSchedule5.class)
       |          |
       |          +-- (ScheduleInsert2.class)
       |          |
       |          +-- (ScheduleView1.class)
       |          |
       |          +-- (EditSchedule1.class)
       |          |
       |          +-- (ScheduleUpdate1.class)
       |          |
       |          +-- (DeleteCheck1.class)
       |          |
       |          +-- (ScheduleDelete1.class)
       |          |
       |          +-- (LoginPage1.class)
       |          |
       |          +-- (AuthFilter1.class)
       |          |
       |          +-- (LoginCheck1.class)
       |
       +-- img

また作成したサーブレットを呼び出せるように「web.xml」を次のように書き換えます。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

  <filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>AuthFilter1</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/MonthView</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/NewSchedule</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/ScheduleInsert</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/ScheduleView</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/EditSchedule</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/ScheduleUpdate</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/DeleteCheck</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/ScheduleDelete</url-pattern>
  </filter-mapping>

  <servlet>
    <servlet-name>MonthView</servlet-name>
    <servlet-class>MonthView6</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>MonthView</servlet-name>
    <url-pattern>/MonthView</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>NewSchedule</servlet-name>
    <servlet-class>NewSchedule5</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>NewSchedule</servlet-name>
    <url-pattern>/NewSchedule</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>ScheduleInsert</servlet-name>
    <servlet-class>ScheduleInsert2</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ScheduleInsert</servlet-name>
    <url-pattern>/ScheduleInsert</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>ScheduleView</servlet-name>
    <servlet-class>ScheduleView1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ScheduleView</servlet-name>
    <url-pattern>/ScheduleView</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>EditSchedule</servlet-name>
    <servlet-class>EditSchedule1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>EditSchedule</servlet-name>
    <url-pattern>/EditSchedule</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>ScheduleUpdate</servlet-name>
    <servlet-class>ScheduleUpdate1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ScheduleUpdate</servlet-name>
    <url-pattern>/ScheduleUpdate</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>DeleteCheck</servlet-name>
    <servlet-class>DeleteCheck1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>DeleteCheck</servlet-name>
    <url-pattern>/DeleteCheck</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>ScheduleDelete</servlet-name>
    <servlet-class>ScheduleDelete1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ScheduleDelete</servlet-name>
    <url-pattern>/ScheduleDelete</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>LoginPage</servlet-name>
    <servlet-class>LoginPage1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LoginPage</servlet-name>
    <url-pattern>/LoginPage</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>LoginCheck</servlet-name>
    <servlet-class>LoginCheck1</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LoginCheck</servlet-name>
    <url-pattern>/LoginCheck</url-pattern>
  </servlet-mapping>
</web-app>

それではブラウザで「http://localhost:8080/schedule/MonthView」へアクセスします。フィルタが設定されているため「AuthFilter」サーブレットが先に実行されます。認証の有無がチェックされますが認証が行われていませんので次のようにログイン画面が表示されます。

スケジュール管理

まず認証に失敗してみます。ユーザー名に「test」パスワードに「test」と入力してから「login」ボタンをクリックして下さい。

スケジュール管理

データベースに登録されていないユーザー名とパスワードのペアですので認証に失敗して再度ログイン画面が表示されます。この時、一度ログインに失敗していることが分かるように表示しています。

では今度は登録済みのユーザー名とパスワードを入力します。ユーザー名に「root」パスワードに「root」と入力してから「login」ボタンをクリックして下さい。

スケジュール管理

認証が無事通り、認証後に最初に表示される「MonthView」サーブレットが表示されます。

( Written by Tatsuo Ikura )