質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JavaServer Faces 2

JavaServer Faces(JSF)は、Webアプリケーションのユーザインタフェースを作成するためのフレームワークです。簡単に高機能なWebアプリケーションのインタフェースを作成することが可能です。

解決済

JavaServerFacesでログイン済みユーザしかアクセスできないページを定義したい

pen_ari
pen_ari

総合スコア50

JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JavaServer Faces 2

JavaServer Faces(JSF)は、Webアプリケーションのユーザインタフェースを作成するためのフレームワークです。簡単に高機能なWebアプリケーションのインタフェースを作成することが可能です。

1回答

0評価

0クリップ

489閲覧

投稿2020/11/11 05:39

編集2020/11/11 05:41

前提・実現したいこと

ログインページから習得したユーザ名とパスワードを使用して認証を行い、認証成功後ウェルカムページにアクセスします。
このウェルカムページには認証済みユーザのみアクセスできるようにしたいです。(未認証ユーザが直接URLで来た場合はログインページへリダイレクトさせたい)
JavaEE初心者過ぎて、さっぱりわかりません。
ログイン画面にて表示されるユーザ名に@NotNullをつければいいかと思いましたが違いました
また、認証処理が独自かつ、web.xmlのログイン構成は管理者用のログイン構成をbasicで使用しており、使用できません。

該当のソースコード

index.html

html

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>ログインページ</title> </h:head> <h:body> <h:form id="loginForm"> <table> <tr> <td><h:outputText value="ユーザ名" /></td> <td> <h:inputText id="username" value="#{authentication.username}"/> </td> </tr> <tr> <td><h:outputText value="パスワード" /></td> <td> <h:inputSecret id="password" value="#{authentication.password}" /> </td> </tr> </table> <br/> <h:commandButton id="changePasswordButton" value="ログイン" action="#{authentication.auth()}"/> </h:form> </h:body> </html>

Authentication.java

java

import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Named; @Named @SessionScoped public class Authentication implements Serializable { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String auth() { try { // 認証処理(独自) return "/welcome.xhtml?faces-redirect=true"; } catch (Exception e) { return null; } } };

welcome.xhtml

html

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>Facelet Title</title> </h:head> <h:body> ようこそ <h:outputText value="#{authentication.username}" /> さん </h:body> </html>

試したこと

@NotNull:インプット時のバリデーションのため無意味?付けてみてもバリデーションも有効化されていなさそうでした。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JSF

JSF (JavaServer Faces)とは、JavaベースのWebアプリケーションフレームワークの一つです。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JavaServer Faces 2

JavaServer Faces(JSF)は、Webアプリケーションのユーザインタフェースを作成するためのフレームワークです。簡単に高機能なWebアプリケーションのインタフェースを作成することが可能です。