博客
关于我
客户端登陆服务器用户名验证
阅读量:542 次
发布时间:2019-03-07

本文共 3000 字,大约阅读时间需要 10 分钟。

Java验证登录系统优化方案

系统简介

这是一个基于Java语言开发的客户端-服务器验证登录系统,旨在通过键盘输入验证用户名并防止暴力登录。系统允许最多三次尝试登录,确保账号安全。

系统功能

  • 客户端:接收用户名并逐步验证
  • 服务器:根据用户名判断是否存在,如果存在返回欢迎信息,否则提示用户名不存在
  • 防止暴力登录:限制最多三次尝试

优化思路

  • 客户端实现

    • 使用Socket建立连接
    • 通过BufferedReader读取键盘输入
    • 允许用户最多三次尝试登录
  • 服务器端处理

    • 使用多线程处理客户端连接
    • 查找 username.txt 文件,验证是否存在
    • 返回相应提示信息
  • 安全性与用户体验

    • 设置三次登录限制
    • 提供清晰的提示信息
    • 用户友好的界面设计
  • 代码解读

    客户端代码:

    class client {    public static void main(String[] args) throws Exception {        Socket s = new Socket("192.168.33.1", 10008);                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));        PrintWriter pw = new PrintWriter(s.getOutputStream(), true);                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));                boolean flag = true;        for (int x = 0; x < 3; x++) {            String line = bufr.readLine();            if (line == null) break;                        pw.println(line);            pw.println(line);                        String info = bufin.readLine();            System.out.println("Server info: " + info);            if (info.contains("欢迎登陆")) flag = false;            if (!flag) break;        }                bufr.close();        s.close();    }}

    服务器端代码:

    class ServerThread implements Runnable {    private Socket s;    ServerThread(Socket s) {        this.s = s;    }    public void run() {        String ip = s.getInetAddress().getHostAddress();        System.out.println(ip + "...........connect");                try {            for (int x = 0; x < 3; x++) {                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));                String name = bufin.readLine();                if (name == null) break;                                BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));                PrintWriter out = new PrintWriter(s.getOutputStream(), true);                boolean flag = false;                                while ((line = bufr.readLine()) != null) {                    if (line.equals(name)) {                        flag = true;                        break;                    }                }                                if (flag) {                    System.out.println(name + ":已登录");                    out.println(name + ":欢迎登陆");                    break;                } else {                    System.out.println(name + ":尝试登陆");                    out.println(name + ":用户名不存在");                }            }            s.close();        } catch (Exception e) {            throw new RuntimeException("验证失败");        }    }}class server {    public static void main(String[] args) throws Exception {        ServerSocket ss = new ServerSocket(10008);        while (true) {            Socket s = ss.accept();            new Thread(new ServerThread(s)).start();        }    }}

    系统优化

  • 代码清理:

    • 删除冗余代码
    • 简化异常处理
    • 优化读取方式
  • 性能提升:

    • 使用线程处理多个客户端
    • 读取本地文本文件实现用户验证
    • 提高数据传输效率
  • 安全性保障:

    • 限制登录次数
    • 验证用户名存在性
    • 提供友好的提示信息
  • 结论

    系统通过简化逻辑优化代码结构,实现了用户验证功能,同时提供良好的用户体验和安全防护,适用于大学校园网下的一般访问验证场景。

    转载地址:http://iypjz.baihongyu.com/

    你可能感兴趣的文章
    ParameterizedThreadStart task
    查看>>
    Spring security之管理session
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
    查看>>
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passwd命令限制用户密码到期时间
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practice 乙级1021-1030
    查看>>
    PAT (Basic Level) Practice 乙级1031-1040
    查看>>
    PAT (Basic Level) Practice 乙级1041-1045
    查看>>