• cas重新实现登陆认证逻辑


    package com.ucit.cas;
    
    import java.security.NoSuchAlgorithmException;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.jetspeed.security.SecurityException;
    import org.apache.jetspeed.security.spi.impl.MessageDigestCredentialPasswordEncoder;
    import org.jasig.cas.adaptors.jdbc.AbstractJdbcUsernamePasswordAuthenticationHandler;
    import org.jasig.cas.authentication.handler.AuthenticationException;
    import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
    import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
    
    public final class UCITCASAuthHandler extends
    		AbstractJdbcUsernamePasswordAuthenticationHandler {
    	protected boolean authenticateUsernamePasswordInternal(
    			UsernamePasswordCredentials credentials)
    			throws AuthenticationException {
    		String username = credentials.getUsername();
    		String password = credentials.getPassword();
    		try {
    			MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
    			/*List<String> list = getJdbcTemplate().query(
    					"SELECT column_value FROM security_principal p,"
    							+ "security_credential c where p.full_path=? and "
    							+ "c.principal_id=p.principal_id",
    					new ParameterizedRowMapper<String>() {
    						public String mapRow(ResultSet rs, int index)
    								throws SQLException {
    							return rs.getString(1);
    						}
    					}, "/user/" + username);*/
    			List<String> list = getJdbcTemplate().query(
    					"select column_value from porta_user pu where pu.full_path=? ",
    					new ParameterizedRowMapper<String>() {
    						public String mapRow(ResultSet rs, int index)
    								throws SQLException {
    							return rs.getString(1);
    						}
    					}, "/user/" + username);
    			return list.isEmpty() ? aliasCheck(username, password,credentials) : list.get(0)
    					.equals(encoder.encode(username, password));
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    	private boolean aliasCheck(String username, String password,UsernamePasswordCredentials credentials) {
    		try {
    			MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
    		
    		List<String[]> list = getJdbcTemplate().query(
    				"select column_value,full_path from porta_user  where alias=?",
    				new ParameterizedRowMapper<String[]>() {
    					public String[] mapRow(ResultSet rs, int index)
    							throws SQLException {
    						return new String[]{rs.getString(1),rs.getString(2)};
    					}
    				}, username);
    		if (list.isEmpty())
    			return verify(username, password);
    		else{
    			String _username=list.get(0)[1].replaceAll("/user/", "");
    			credentials.setUsername(_username);
    			return list.get(0)[0].equals(encoder.encode(_username, password));
    		}
    //		return list.isEmpty() ? verify(username, password) : list.get(0)
    //				.equals(encoder.encode(username, password));
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace(); 
    			return false;  
    		}
    
    	}
    	private boolean verify(String username, String password) {
    		List<String> list = getJdbcTemplate().query(
    				"SELECT uid FROM user where ULoginID=? and upass=?",
    				new ParameterizedRowMapper<String>() {
    					public String mapRow(ResultSet rs, int index)
    							throws SQLException {
    						return rs.getString(1);  
    					}
    				}, username, password);
    		return !list.isEmpty();
    	}    
    	
    	
    	public static void main(String[] args) throws NoSuchAlgorithmException, SecurityException {
    		MessageDigestCredentialPasswordEncoder encoder = new MessageDigestCredentialPasswordEncoder();
    		System.out.println(encoder.encode("510722197305041435", "7788119"));
    	}
    }
    

    下载项目
    https://9p9q8w.blu.livefilestore.com/y1p0ioo0EVb55XY-YbpBePUgmee5w3lcGPIzWOsknbo-6BvbinZZAPtsPMkOKD0kZ0vuJgaOwqrodOx6FmcbTVMWDQPYU_HGEQT/cas(2010-06-08%E9%87%8D%E5%86%99%E7%99%BB%E9%99%86%E9%AA%8C%E8%AF%81%2C%E6%94%AF%E6%8C%81%E5%88%AB%E5%90%8D%E7%99%BB%E9%99%86).zip?download&amp;psid=1

  • 相关阅读:
    Game of War
    Unreal Engine 4 性能优化工具(Profiler Tool)
    触屏设备上的多点触碰检测C++代码实现
    独立游戏设计流程:从概念到写码的13个步骤
    ue4 多相机分屏与小地图效果实现教程
    Unreal Engine 4 笔记 2
    3dsMax模型转UE4
    以《西游记》为例 详解游戏设计归纳演绎法
    假期关于产品-设计-逻辑-市场-团队思考节选30篇
    Unreal Engine 4 笔记
  • 原文地址:https://www.cnblogs.com/jifeng/p/1754406.html
Copyright © 2020-2023  润新知