Acegi是Spring的一個擴(kuò)展框架,專注于解決應(yīng)用中的安全問題。
今天花了一下午加一晚上,終于做了一個基于Acegi的自己的HelloWorld。
感覺在RDBMS的認(rèn)證方式的擴(kuò)展上有些不靈活。默認(rèn)是基于開源的數(shù)據(jù)庫HSQLDB的,實現(xiàn)這個機(jī)制的是JdbcDaoImpl.java類。看了sourcecode,發(fā)現(xiàn)類里面寫死了兩個SQL語句:
public static final String DEF_USERS_BY_USERNAME_QUERY = "SELECT username,password,enabled FROM users WHERE username = ?";
public static final String DEF_AUTHORITIES_BY_USERNAME_QUERY = "SELECT username,authority FROM authorities WHERE username = ?";
相關(guān)代碼沒進(jìn)一步看,發(fā)現(xiàn)有幾個Polo類,如User.java和上面的語句對應(yīng),所以,這個語句的字段不能隨便改。JdbcDaoImpl類的源代碼建議通過繼承來擴(kuò)展,我覺得不是很好,應(yīng)為Sql語句在父類里寫死了。在實際應(yīng)用中,users表結(jié)構(gòu)比這復(fù)雜的多。
想抽空,重新寫一個JdbcDaoImp類,替換一下。