网上好多都是4.0以前的教程,但好像和4.0以后的版本多少有些出入,研究以后在此记录一下。
一、首先我们需要自定义负责认证的这个类
自定义这个类才能抛出我们自定义的异常,比如说帐号已过期,帐号被禁用什么的。
deployerConfigContext.xml里原来默认的是
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
自定义一个验证类
import java.security.GeneralSecurityException;
import javax.security.auth.login.AccountNotFoundException;
import javax.security.auth.login.FailedLoginException;
import javax.validation.constraints.NotNull;
import org.jasig.cas.adaptors.jdbc.AbstractJdbcUsernamePasswordAuthenticationHandler;
import org.jasig.cas.authentication.HandlerResult;
import org.jasig.cas.authentication.PreventedException;
import org.jasig.cas.authentication.UsernamePasswordCredential;
import org.jasig.cas.authentication.principal.SimplePrincipal;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import com.innochina.exception.MyAccountDisabledException;
public class MyQueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler {
@NotNull
private String sql;
protected final HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential credential)
throws GeneralSecurityException, PreventedException {
String username = credential.getUsername();
String encryptedPassword = getPasswordEncoder().encode(credential.getPassw