jsp頁面往往在容器提供的乙個執行時環境中執行。相應地,所有鑑別和訪問控制都可以由容器處理,從而將應用開發人員解脫出來,而不必完成諸如實現適當安全控制等重要任務。安全性很難把握,因此作為起步,使用容器提供的機制往往是上選之策,這些機制已經經受了時間的考驗,本文以tomcat為例,簡單的配置使用容器提供的鑑別功能。相關**見附件。
專案目錄結構
其中admin目錄為需要進行訪問控制的,login.html為登陸頁面。login登陸介面使用表單向容器提供鑑別資訊。表單內容如下:
其中action為j_security_check,使用者名為j_username,密碼為j_password在web.xml檔案新增以下配置資訊
adminpage元素包含乙個元素,它定義了要保護的資源,還包含乙個,這個元素包含乙個角色名,定義了誰有許可權訪問這個資源。使用url-patten來定於需要保護的url位址。元素定義了必須對映至容器安全域中的使用者的所有角色名。元素定義了需要使用的鑑別方式,以及與鑑別相關的資訊。servlet容器支援4種鑑別方式,分別是basic,digest,form,client-cert,本文以最常見的form表單鑑別為例,其他鑑別方式請檢視相應文件。中指定了登陸頁面和密碼錯誤重定向到的頁面。/admin/*
admin
admin
form
/login.html
/login-error.html
安全域是乙個儲存使用者名稱,密碼和角色名的資料庫。servlet標準中不包含對安全域配置的描述,所以只能使用與容器相關的配置來指定安全域。
在tomcat中,可以指定多種安全域,包括jdbcrealm,datasourcerealm,jndirealm,memoryrealm,jaasrealm。本文配置jdbcrealm安全域使用mysql資料庫儲存使用者資訊。關於其他安全域的配置,請檢視tomcat文件 。
安全域配置資訊可以放置在tomcat配置檔案或元素中作為全域性安全域,供多個應用程式使用。也可以放置在web-inf/context.xml檔案元素中,供當前應用程式使用。context.xml配置如下:
<?xml version="1.0" encoding="utf-8"?>元素配置為使用mysql資料庫儲存鑑別資訊。mysql資料庫表結構為:
create table users (
user_name varchar(15) not null primary key,
user_pass varchar(15) not null
);create table user_roles (
user_name varchar(15) not null,
role_name varchar(15) not null,
primary key (user_name, role_name)
);
usertable元素指定使用者表,usernamecol和usercredcol分別指定使用者名稱和密碼的列名。userroletable指定角色表,rolenamecol指定角色名列名。注意usernamecol指定的使用者列名在兩個表中必須相同。插入測試資料
insert into users values('admin','admin');
insert into user_roles values('admin','admin');
啟動瀏覽器訪問http://localhost:8080/hotweb/admin/security.html,重定向到登陸頁面,使用admin,admin登陸。登陸錯誤則重定向到login-error.html。相關**見附件。
在 Eclipse 中使用 Tomcat
點 next 出現 tomcat server 介面。選擇 tomcat 安裝目錄和 jre 版本。現在你就可以新建乙個 專案了。我一般是建乙個 dynamic web project 建好後,在tomcat圖示上點右鍵,選擇 add and remove projects 在新出現的視窗中將要發布...
在tomcat中使用context節點部署工程
tomcat部署工程有很多種 1 最常用的方法是在開發階段通過myeclipse直接部署,然後可以進行除錯等操作。4 使用context節點配置工程路徑 1 將工程打包成war之後,在server.xml配置context節點。xml host name localhost unpackwars t...
在eclipse中使用tomcat開發RED5專案
在eclipse中使用tomcat 像開發普通j2ee專案一樣開發red5專案 介紹 版本 red5 0.7 eclipse3.3.1 myeclipse 5.1 tomcat 6.0.16 1。檢視 tomcat home conf catalina localhost 目錄下是否有與 red5 ...