提供一個(gè)思路哈:
成都創(chuàng)新互聯(lián)擁有十載的建站服務(wù)經(jīng)驗(yàn),在此期間,我們發(fā)現(xiàn)較多的客戶在挑選建站服務(wù)商前都非常的猶豫。主要問題集中:在無法預(yù)知自己的網(wǎng)站呈現(xiàn)的效果是什么樣的?也無法判斷選擇的服務(wù)商設(shè)計(jì)出來的網(wǎng)頁效果自己是否會(huì)滿意?成都創(chuàng)新互聯(lián)業(yè)務(wù)涵蓋了互聯(lián)網(wǎng)平臺(tái)網(wǎng)站建設(shè)、移動(dòng)平臺(tái)網(wǎng)站制作、網(wǎng)絡(luò)推廣、定制網(wǎng)站開發(fā)等服務(wù)。成都創(chuàng)新互聯(lián)網(wǎng)站開發(fā)公司本著不拘一格的網(wǎng)站視覺設(shè)計(jì)和網(wǎng)站開發(fā)技術(shù)相結(jié)合,為企業(yè)做網(wǎng)站提供成熟的網(wǎng)站設(shè)計(jì)方案。
1、user類中定義兩個(gè)方法,分別根據(jù)權(quán)限名和權(quán)限路徑判斷用戶是否有對(duì)應(yīng)權(quán)限
2、定義一個(gè)攔截器,攔截所有請(qǐng)求,根據(jù)路徑判斷是否有操作權(quán)限
3、頁面調(diào)用user的權(quán)限判斷方法,決定是否顯示相應(yīng)的權(quán)限
在web應(yīng)用中,對(duì)頁面的訪問控制通常通過程序來控制,流程為:
登錄 - 設(shè)置session - 訪問受限頁面時(shí)檢查session是否存在,如果不存在,禁止訪問
對(duì)于較小型的web應(yīng)用,可以通過tomcat內(nèi)置的訪問控制機(jī)制來實(shí)現(xiàn)權(quán)限控制。采用這種機(jī)制的好處是,程序中無需進(jìn)行權(quán)限控制,完全通過對(duì)tomcat的配置即可完成訪問控制。
為了在tomcat頁面設(shè)置訪問權(quán)限控制,在項(xiàng)目的WEB-INFO/web.xml文件中,進(jìn)行如下設(shè)置:
Java代碼 復(fù)制代碼
1. web-app
2. !--servlet等其他配置--
3. security-constraint
4. web-resource-collection
5. web-resource-nameMy Test/web-resource-name
6. url-pattern/admin/*/url-pattern
7. /web-resource-collection
8. auth-constraint
9. role-namerole1/role-name
10. role-nametomcat/role-name
11. /auth-constraint
12. /security-constraint
13. login-config
14. auth-methodBASIC/auth-method
15. realm-nameMy Test/realm-name
16. /login-config
web-app
!--servlet等其他配置--
security-constraint
web-resource-collection
web-resource-nameMy Test/web-resource-name
url-pattern/admin/*/url-pattern
/web-resource-collection
auth-constraint
role-namerole1/role-name
role-nametomcat/role-name
/auth-constraint
/security-constraint
login-config
auth-methodBASIC/auth-method
realm-nameMy Test/realm-name
/login-config
其中,url-pattern中指定受限的url,可以使用通配符*,通常對(duì)整個(gè)目錄進(jìn)行訪問權(quán)限控制。
auth-constraint中指定哪些角色可以訪問url-pattern指定的url,在role-name中可以設(shè)置一個(gè)或多個(gè)角色名。
使用的角色名來自tomcat的配置文件$/conf/tomcat-users.xml。
login-config中設(shè)置登錄方式,auth-method的取值為BASIC或FORM。如果為BASIC,瀏覽器在需要登錄時(shí)彈出一個(gè)登錄窗口。如果為FORM方式,需要指定登錄頁面和登錄失敗時(shí)的提示信息顯示頁面。
使用FORM方式的配置樣例如下:
Java代碼 復(fù)制代碼
1. login-config
2. auth-methodFORM/auth-method
3. realm-nameExample Form-Based Authentication Area/realm-name
4. form-login-config
5. form-login-page/login.jsp/form-login-page
6. form-error-page/error.jsp/form-error-page
7. /form-login-config
8. /login-config
login-config
auth-methodFORM/auth-method
realm-nameExample Form-Based Authentication Area/realm-name
form-login-config
form-login-page/login.jsp/form-login-page
form-error-page/error.jsp/form-error-page
/form-login-config
/login-config
其中的form-login-page指定登錄頁面url,form-error-page指定登錄失敗時(shí)的提示頁面url。
登錄頁面中,form的action,以及其中的用戶名和密碼兩個(gè)參數(shù)的名稱,都應(yīng)取固定的值。登錄的后臺(tái)處理程序?yàn)閖_security_check;用戶名和密碼的參數(shù)名稱分別為:j_username和j_password。
如下是登錄頁面(如:login.jsp)的一段示例代碼:
Java代碼 復(fù)制代碼
1. form method="POST" action='%= response.encodeURL("j_security_check") %'
2. table border="0" cellspacing="5"
3. tr
4. th align="right"Username:/th
5. td align="left"input type="text" name="j_username"/td
6. /tr
7. tr
8. th align="right"Password:/th
9. td align="left"input type="password" name="j_password"/td
10. /tr
11. tr
12. td align="right"input type="submit" value="Log In"/td
13. td align="left"input type="reset"/td
14. /tr
15. /table/form
import java.io.IOException;/××只能給當(dāng)前用戶賦予對(duì)該文件的權(quán)限,調(diào)用createNewFile()方法默認(rèn)的權(quán)限是644.\x0d\x0a×/public class FilePermission{public static void main( String[] args ){try {File file = new File("/home/test3.txt");\x0d\x0aif (file.createNewFile()){\x0d\x0aSystem.out.println("File is created!");\x0d\x0a//Runtime.getRuntime().exec("chmod 777 /home/test3.txt");\x0d\x0afile.setExecutable(true);//設(shè)置可執(zhí)行權(quán)限\x0d\x0afile.setReadable(true);//設(shè)置可讀權(quán)限\x0d\x0afile.setWritable(true);//設(shè)置可寫權(quán)限\x0d\x0aSystem.out.println("is execute allow : " + file.canExecute());\x0d\x0aSystem.out.println("is read allow : " + file.canRead());\x0d\x0aSystem.out.println("is write allow : " + file.canWrite());}else{System.out.println("File already exists.");}