以下のサンプルでは、プログラマチックなセキュリティー・モデルを使用する Web アプリケーションまたはサーブレットの例を示します。
この例は、使用方法の一例です。 ただし、これがプログラマチックなセキュリティー・モデルの唯一の使用法ではありません。 アプリケーションは、getUserPrincipal、isUserInRole() および getRemoteUser メソッドで戻される情報がそのアプリケーションに対応している限り、これらの情報を使用することができます。 できる限り、宣言セキュリティー・モデルを使用してください。
ファイル: HelloServlet.java
public class HelloServlet extends javax.servlet.http.HttpServlet { public void doPost( javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException { } public void doGet( javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException { String s = "Hello"; // get remote user using getUserPrincipal() java.security.Principal principal = request.getUserPrincipal(); String remoteUserName = ""; if( principal != null ) remoteUserName = principal.getName(); // get remote user using getRemoteUser() String remoteUser = request.getRemoteUser(); // check if remote user is granted Mgr role boolean isMgr = request.isUserInRole("Mgr"); // display Hello username for managers and bob. if ( isMgr || remoteUserName.equals("bob") ) s = "Hello " + remoteUserName; String message = "<html> ¥n" + "<head><title>Hello Servlet</title></head>¥n" + "<body> /n +" "<h1> " +s+ </h1>/n " + byte[] bytes = message.getBytes(); // displays "Hello" for ordinary users // and displays "Hello username" for managers and "bob". response.getOutputStream().write(bytes); } }
<security-role-ref> <description> </description> <role-name>Mgr</role-name> </security-role-ref>