Skip to content

C、密码

wangjie edited this page Dec 25, 2019 · 3 revisions

加密配置:

#jsets-shiro配置
jsets:
  shiro:
    passwd-alg: MD5 #密码加密算法,支持MD5/SHA1,不配置默认MD5
    passwd-salt: ofaffadfev1234567--090swctewst #密码加密HASH盐 ,不配置默认使用一组乱序数字
    passwd-iterations: 2 #密码加密HASH次数,不配置默认2次

用户密码加密:

/**
* 保存用户信息
*/
public void save(UserEntity user){
    // 密码明文加密存储
    user.setPassword(ShiroUtils.password(user.getPassword()));
    userMapper.insert(user);
}

自定义加密算法

实现PasswordProvider接口

public interface PasswordProvider {
	
	/**
	 * 加密
	 * @param plainPassord 明文密码
	 * @return 密文密码
	 */
	String encrypt(String plainPassord);

}

如下面的示例,是DES加密的实现:

/**
 * 自定义对称加密算法
 * @author wangjie
 */
public class MyDESPasswordProvider implements PasswordProvider{

	@Override
	public String encrypt(String plainPassord) {
		return DES.encrypt(plainPassord,DES_KEY);
	}
}

配置ShiroCustomizer

@Configuration
public class ApplicationConfig{
	// 账号数据提供服务
	@Autowired
	private AccountProviderImpl accountProviderImpl;
	// 自定义的加密实现
	@Autowired
	private MyDESPasswordProvider myDESPasswordProvider;

	@Bean
	public ShiroCustomizer shiroCustomizer() {
		ShiroCustomizer customizer = new ShiroCustomizer();
		// 设置账号数据提供服务
		customizer.setShiroAccountProvider(accountProviderImpl); 
		// 设置加密实现
		customizer.setPasswordProvider(myDESPasswordProvider);
		return customizer;
	}
}