使用struts2攔截器如何實(shí)現(xiàn)對(duì)用戶進(jìn)行權(quán)限控制?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、電白ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的電白網(wǎng)站制作公司
大多數(shù)網(wǎng)站會(huì)設(shè)置用戶權(quán)限,如過濾非法用戶,用戶不登錄時(shí)不能進(jìn)行訪問,或者設(shè)置訪問的權(quán)限,如部分內(nèi)容僅對(duì)VIP開放等等,這些權(quán)限的控制都可以用struts2中的攔截器來實(shí)現(xiàn)。
下面通過一個(gè)簡(jiǎn)單的Demo來模擬這種用戶權(quán)限控制的實(shí)現(xiàn)流程,設(shè)定三種不同身份的用戶,commen為普通用戶,VIP為會(huì)員用戶,還有一種admin為管理員。
先看一下Demo的整體結(jié)構(gòu):
首先搭建struts2框架的開發(fā)環(huán)境(前面博客中有介紹),環(huán)境搭建完之后又再看一看如何配置struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>/Error.jsp /WEB-INF/pages/index.jsp /WEB-INF/pages/admin.jsp /WEB-INF/pages/vipUser.jsp /WEB-INF/pages/commen.jsp
其中,
Action類,不做處理,全部放行,讓攔截器處理:
public class LoginAction implements SessionAware{ @SuppressWarnings("unused") private String username; private Mapsession; public void setUsername(String username) { this.username = username; session.put("username", username); } public void setSession(Map session) { // TODO Auto-generated method stub this.session = session; } public String AdminExecute(){ return "success"; } public String vipExecute(){ return "success"; } public String commenExecute(){ return "success"; } public String execute(){ return "success"; } }
Inteceptor(攔截器類):
public class LoginAction implements SessionAware{ @SuppressWarnings("unused") private String username; private Mapsession; public void setUsername(String username) { this.username = username; session.put("username", username); } public void setSession(Map session) { // TODO Auto-generated method stub this.session = session; } public String AdminExecute(){ return "success"; } public String vipExecute(){ return "success"; } public String commenExecute(){ return "success"; } public String execute(){ return "success"; } }
只是 模擬攔截器的實(shí)現(xiàn)思路,沒有持久層的數(shù)據(jù),這里的方法是使用invocation.getProxy().getActionName()方法來獲取struts.xml中配置的action名稱,和用戶表單提交的名稱做對(duì)比,如果輸入的用戶名是以action名開頭的,就放行,否則攔截。
登錄jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>" rel="external nofollow" rel="external nofollow" > login
攔截后跳轉(zhuǎn)頁(yè):
你的權(quán)限不足,請(qǐng)先升級(jí)權(quán)限...
訪問資源代碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>index admin
vip
commen
其余admin.jsp等界面沒有內(nèi)容,只是為了區(qū)分實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面不同。
運(yùn)行結(jié)果:
使用commen角色登錄:
點(diǎn)擊VIP以及admin跳轉(zhuǎn)鏈接時(shí):
關(guān)于使用struts2攔截器如何實(shí)現(xiàn)對(duì)用戶進(jìn)行權(quán)限控制問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。