簡單實用一分鐘上手級許可權控制

2021-04-12 21:48:22 字數 3786 閱讀 4043

簡單實用一分鐘上手級許可權控制

用的是通過filter過濾來管理許可權的方法, 很簡單,但也很實用。 這個專案並不小,但這麼乙個類就已經可以滿足其許可權管理的需要了,所以其實很多時候,許可權管理大家並不必要想得那麼複雜, 對於不少系統,簡單通過filter來管理就ok了, ****** 也是一種美^_^ 在web.xml裡加入

view plain

copy to clipboard

print?

authentication     

class>com.springside.demo.security.urlfilterclass>     

onerror     

/login.jsp     

authentication     

*.jsp     

view plain

copy to clipboard

print?

public

class urlfilter implements filter       

public

void init(filterconfig filterconfig) throws servletexception       

public

void dofilter(servletrequest servletrequest,      

servletresponse servletresponse, filterchain chain)      

throws ioexception, servletexception  else

if (loginuser == null)  else       

}      

private

void checklogin(string url) throws servletexception, ioexception       

}      

response.sendredirect("login.jsp");      

}      

private

void verifyurl(string url, loginuser loginuser)      

throws ioexception, servletexception  else       

}      

/**  

* 判斷是否是公用介面  

* 判斷該使用者是否有權請求該url  

*   

* @param royurl  

*            user擁有的授權的的url串集合  

* @param url  

*            當前請求的url  

* @param reqmap  

*            當前request的引數  

* @return 是否通過該url  

*/protected

boolean pass(set royurl, string url, map reqmap)       

}      

// 分割url與引數   

string spw = res_string.split("//?"); // 用"//?" 轉義後即可得到正確的結   

if (!url.equalsignorecase(spw[0]))       

if (match && spw.length > 1)       

// 輪詢   

string values = (string) reqmap.get(key);      

if (values != null)       

match = false;      

}      

if (!match)       

}      

}      

}      

if (match)       

}      

return match;      

}      

public

static

void main(string args) );      

string str;      

set royurl = new hashset();      

// 和授權的的url根本不同,false   

royurl.add("/user.do?a=1&b=2");      

system.out.println("match false:" + filter.pass(royurl, url, reqmap));      

// 授權的請求引數13,14時 false   

royurl.add("/baseprod/product.do?productline=13&productline=14");      

system.out.println("match false:" + filter.pass(royurl, url, reqmap));      

// 授權的請求引數11,13時 false   

royurl.add("/baseprod/product.do?productline=11&productline=13");      

system.out.println("match false:" + filter.pass(royurl, url, reqmap));      

// 授權的請求引數11時 true   

royurl.add("/baseprod/product.do?productline=11");      

system.out.println("match true:" + filter.pass(royurl, url, reqmap));      

// 引數的不論順序 true   

royurl.add("/baseprod/product.do?productline=12&productline=11");      

system.out.println("match true:" + filter.pass(royurl, url, reqmap));      

royurl.clear();      

// 支援 "*" 號作萬用字元 true   

royurl.add("/baseprod/product.do*");      

system.out.println("match ture:" + filter.pass(royurl, url, reqmap));      

}      

}     

loginuser 類:

view plain

copy to clipboard

print?

public

class loginuser       

public

void setname(string name)       

public set getresstrings()       

public

void setresstrings(set resstrings)       

}     

Git一分鐘上手

流程 取 每次工作前更新 到最新版本 修改 提交 到伺服器 設定使用者名稱與郵箱 12 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取 git clone git se...

Git一分鐘上手

git一分鐘上手 流程 取 每次工作前更新 到最新版本 修改 提交 到伺服器 取 及修改全域性設定 設定使用者名稱與郵箱 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取...

Git一分鐘上手

流程 取 每次工作前更新 到最新版本 修改 提交 到伺服器 設定使用者名稱與郵箱 12 git config global user.name my name git config global user.email my email.com 從已有的git庫中提取 git clone git se...