JWT暂且不表,主要讲讲如何获取Django的用户表和验证密码,由于Django的用户密码都是通过pbkdf2_sha256加密后存入数据库的,那么需要用java重写这加密过程然后进行比对。
Pbkdf2Sha256.java
package com.arithmeticjia.zuul.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.Base64;
import java.util.Random;
/**
* @author ArithmeticJia
* @version 1.0
* @date 2021/3/14 1:49 下午
*/
public class Pbkdf2Sha256 {
public static final Integer DEFAULT_ITERATIONS = 20000;
public static final String algorithm = "pbkdf2_sha256";
public Pbkdf2Sha256() {
}
public static String getEncodedHash(String password, String salt, int iterations) {
// Returns only the last part of whole encoded password
SecretKeyFactory keyFactory = null;
try {
keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
} catch (NoSuchAlgorithmException e) {
System.err.println("Could NOT retrieve PBKDF2WithHmacSHA256 algorithm");
System.exit(1);
}
KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt.getBytes(Charset.forName("UTF-8")), iterations, 256);
SecretKey secret = null;
try {
secret = keyFactory.generateSecret(keySpec);
} catch (InvalidKeySpecException e) {
System.out.println("Could NOT generate secret key");
e.printStackTrace();

本文介绍了一种使用Java重写Django的用户密码验证流程的方法,包括pbkdf2_sha256加密算法的实现及如何在Django应用中查询用户密码并验证。此外,还介绍了如何利用自定义控制器实现登录认证。
最低0.47元/天 解锁文章
2071

被折叠的 条评论
为什么被折叠?



