簡單實用一分鐘上手級許可權控制
用的是通過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...