天天看點

cas 單點登入_cas單點登入自定義登入驗證配置檔案

前面我們講解了cas的簡單連接配接資料庫以及簡單的加密,可是有時候我們的登入可能不是cas原有的邏輯,我們就必須要重新cas的登入驗證以到達自己想要的效果,好在cas提供這些東西給我們自己重寫。但是在重寫這些之前,需要了解一下幾個注解以及一個配置檔案

注解:@Configuration、@EnableConfigurationProperties(CasConfigurationProperties.class)(這個是重寫一些東西必須得加上的)。

配置檔案

就是在resources建立一個mata-inf的檔案夾,然後建立一個交spring.factories的檔案。這裡面存放的就是我們要放置的類(具體可以檢視一下官方文檔)。

下面正式開始我們的自定義登入驗證的第一步。我們需要繼承某些類,其實cas

已經幫我弄好了一些抽象類,比如AbstractUsernamePasswordAuthenticationHandler,或者是jdbc的認證,其實這些我們都可以自己繼承然後重寫。我們這邊就用AbstractUsernamePasswordAuthenticationHandler這個作為例子把:

cas 單點登入_cas單點登入自定義登入驗證配置檔案
public class Login extends AbstractUsernamePasswordAuthenticationHandler { private static final org.slf4j.Logger LOGGER =LoggerFactory.getLogger(Login.class);public Login(String name, ServicesManager servicesManager, PrincipalFactory principalFactory,Integer order) {super(name, servicesManager, principalFactory, order);// TODO Auto-generated constructor stub}//private final String sql="select password from sec_user where username=?";private String sql="select * from sec_user where username=?";@Overrideprotected HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential transformedCredential,String originalPassword) throws GeneralSecurityException, PreventedException {// TODO Auto-generated method stubDriverManagerDataSource d=new DriverManagerDataSource();d.setDriverClassName("com.mysql.jdbc.Driver");d.setUrl("jdbc:mysql://127.0.0.1:3306/test");d.setUsername("root");d.setPassword("root");JdbcTemplate template=new JdbcTemplate();template.setDataSource(d);String username=transformedCredential.getUsername();String pd=transformedCredential.getPassword();查詢資料庫加密的的密碼UserInfo user=template.queryForObject(sql, new Object[]{username}, new BeanPropertyRowMapper(UserInfo.class));//if(sqlpd.equals(pd)){//return createHandlerResult(transformedCredential, principalFactory.createPrincipal(username, null), null);//}if(user==null){throw new FailedLoginException("沒有該使用者");}//傳回多屬性Map map=new HashMap<>();map.put("email           

繼續閱讀