java实现登录

jwt配置文件

public class JwtUtils {

    private static String signKey = "sziit";
    private static Long expire = 43200000L;

    /**
     * 生成JWT令牌
     * @param claims JWT第二部分负载 payload 中存储的内容
     * @return
     */
    public static String generateJwt(HashMap<String, Object> claims){
        String jwt = Jwts.builder()
                .addClaims(claims)
                .signWith(SignatureAlgorithm.HS256, signKey)
                .setExpiration(new Date(System.currentTimeMillis() + expire))
                .compact();
        return jwt;
    }

    /**
     * 解析JWT令牌
     * @param jwt JWT令牌
     * @return JWT第二部分负载 payload 中存储的内容
     */
    public static Claims parseJWT(String jwt){
        Claims claims = Jwts.parser()
                .setSigningKey(signKey)
                .parseClaimsJws(jwt)
                .getBody();
        return claims;
    }
}

登录校验

    @PostMapping("/password")
    public R<String> loginThroughPassword(@RequestBody Students students){
        String name = students.getName();
        String password = students.getPassword();
        LambdaQueryWrapper<Students> studentsLambdaQueryWrapper = new LambdaQueryWrapper<>();
        studentsLambdaQueryWrapper.eq(Students::getName,name);
        studentsLambdaQueryWrapper.eq(Students::getPassword,password);
        Students one = studentsService.getOne(studentsLambdaQueryWrapper);
        if (one == null) {
            return R.error("用户名或密码错误!!!");
        }
        HashMap<String, Object> claims = new HashMap<>();
        claims.put("id", one.getId());
        claims.put("name", one.getName());
        claims.put("is_number",one.getContactNumber());
        String jwt = JwtUtils.generateJwt(claims); //jwt包含了当前登录的员工信息
        return R.success(jwt);
    }

拦截器

@Component
@Slf4j
public class JwtTokenAdminInterceptor implements HandlerInterceptor {

    /**
     * 校验jwt
     *
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //判断当前拦截到的是Controller的方法还是其他资源
        if (!(handler instanceof HandlerMethod)) {
            //当前拦截到的不是动态方法,直接放行
            return true;
        }

        //1、从请求头中获取令牌
        String token = request.getHeader(token);

        //2、校验令牌
        try {
            log.info("jwt校验:{}", token);
            Claims claims = JwtUtil.parseJWT(token);
            Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());
            log.info("当前员工id:", empId);
            BaseContext.setCurrentId(empId);
            //3、通过,放行
            return true;
        } catch (Exception ex) {
            //4、不通过,响应401状态码
            response.setStatus(401);
            return false;
        }
    }
}

Java实现登录界面可以通过使用Swing或JavaFX等GUI库来实现。以下是一个简单的Java Swing实现登录界面的示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class LoginFrame extends JFrame { private JTextField usernameField; private JPasswordField passwordField; public LoginFrame() { setTitle("登录"); setSize(300, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3, 2)); JLabel usernameLabel = new JLabel("用户名:"); usernameField = new JTextField(); JLabel passwordLabel = new JLabel("密码:"); passwordField = new JPasswordField(); JButton loginButton = new JButton("登录"); loginButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); // 在这里可以添加验证逻辑,比如检查用户名和密码是否正确 JOptionPane.showMessageDialog(LoginFrame.this, "登录成功!"); } }); panel.add(usernameLabel); panel.add(usernameField); panel.add(passwordLabel); panel.add(passwordField); panel.add(new JLabel()); panel.add(loginButton); add(panel); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new LoginFrame().setVisible(true); } }); } } ``` 这个示例创建了一个继承自JFrame的LoginFrame类,其中包含了用户名和密码的文本框、登录按钮等组件。当点击登录按钮时,可以在监听器中添加验证逻辑,比如检查用户名和密码是否正确。如果验证通过,可以弹出一个消息框显示登录成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值