起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: fanlingli

手机和邮箱进行验证登录案例

  [复制链接]

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
QQ
发表于 2017-3-4 10:10:11 | 显示全部楼层
谢谢分享
回复

使用道具 举报

9

主题

33

帖子

67

积分

初级会员

Rank: 2

积分
67
QQ
发表于 2017-8-28 13:48:07 | 显示全部楼层
起步的技术员,没人管理回复问题吗,这样下去谁还会用,,我使用wex5 时间总是浪费在软件的调试错误,不是编译不成功、tomcat启动失败、就是程序启动后报错,1小时学习,5小时找报错原因,我都快崩溃了
回复 支持 反对

使用道具 举报

29

主题

108

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
QQ
发表于 2018-8-16 17:36:23 | 显示全部楼层
作者:
fanlingli

运行环境:java空间 (好像一般的php/mysql空间不支持。这点请哪位说明一下)
问题:
1、在本地运行正常,可以发送邮件验证码,但布署到php/mysql空间,就不能发送验证码了。
2、打包成 apk 在安卓机上运行,也可以发送手机验证码,但只能发一次,且这个验证码,不论什么时间都有用,
把这个验证码填入后,还是能注册,但注册成功后,没有提示语,(在数据库里,能看到刚才注册的手机号和密码/)

这点也请大侠指点,为什么会如此

有人说,这个Baas下的 Regist.java里,登陆用的是php接口,所以用注册的用户名与密码能登陆,
但是,Regist.java注册(不论邮箱还是手机号注册)用的接口又是java接口,所以布署到php/mysql后,能登陆,但不能注册
回复 支持 反对

使用道具 举报

29

主题

108

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
QQ
发表于 2018-8-16 17:37:08 | 显示全部楼层

哪位能把Register.java 转成 Register.php

Register.java



package justep;

import java.io.IOException;
import java.security.Security;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import java.util.Properties;
import java.util.Random;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.NamingException;
import javax.servlet.ServletException;

import com.alibaba.fastjson.JSONObject;
import com.justep.baas.action.ActionContext;
import com.justep.baas.data.DataUtils;

public class Register{
        //创建验证码
        public static String gerCode(){
                String str = "0,1,2,3,4,5,6,7,8,9";  
        String str2[] = str.split(",");//将字符串以,分割  
        Random rand = new Random();//创建Random类的对象rand  
        int index = 0;  
        String randStr = "";//创建内容为空字符串对象randStr  
        randStr = "";//清空字符串对象randStr中的值  
        for (int i=0; i<4; ++i)  
        {  
            index = rand.nextInt(str2.length-1);//在0到str2.length-1生成一个伪随机数赋值给index  
            randStr += str2[index];//将对应索引的数组与randStr的变量值相连接  
       }  
        return randStr;
        }
        //给邮箱发送验证码:
        public static JSONObject sendEmail(JSONObject params, ActionContext context) throws ServletException, IOException, AddressException, MessagingException {
                //获取邮箱
                String email = params.getString("param");
        
                //设置发送者的用户名
                String SEND_UNAME = "1835412838";
                //设置发送者的授权码
                String SEND_PWD = "vehvbzdkcvcgdige";
                String VALUE_SMTP = "smtp.qq.com";
                Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
                Properties props = System.getProperties();
                props.setProperty("mail.smtp.host", "smtp.qq.com");
                props.setProperty("mail.smtp.port", "25");
                props.put("mail.smtp.auth", "true");
                props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                props.setProperty("mail.smtp.port", "465");
                props.setProperty("mail.smtp.socketFactory.port", "465");
               
                final String username = "1835412838";
                final String password = "vehvbzdkcvcgdige";
                Session session = Session.getDefaultInstance(props,
                        new Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(username, password);
                            }
                        });
               
                session.setDebug(true);
                Message msg = new MimeMessage(session);
               
                msg.setFrom(new InternetAddress(username + "@qq.com"));
                msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
                                email, false));
                msg.setSentDate(new Date());
               
                String VerifCode = gerCode();
        msg.setText(VerifCode);
        msg.setSentDate(new Date());
        Transport transport = session.getTransport("smtp");
                // smtp验证,就是你用来发邮件的邮箱用户名和授权码
                transport.connect(VALUE_SMTP, SEND_UNAME, SEND_PWD);
                // 发送
                transport.sendMessage(msg, msg.getAllRecipients());
                Transport.send(msg);
                transport.close();
                JSONObject object = new JSONObject();
                object.put("code", VerifCode);
                System.out.println(object);
                return object;
        }
        
        //查看输入的邮箱是否存在
        public static JSONObject checkUsername(JSONObject params,ActionContext context) throws SQLException, NamingException{
                JSONObject result = new JSONObject();
                String email = params.getString("param");
                Connection conn=null;
                try{
                        conn = context.getConnection("demo");
                        String sql = "SELECT COUNT(fPhoneNumber) FROM NETEASE_USER WHERE fPhoneNumber='"+email+"'";
                        System.out.println(sql);
                        int count = Integer.parseInt(DataUtils.getValueBySQL(conn, sql, null).toString());
                        result.put("count", count);
                        return result;
                } finally {
                        if(conn!=null){
                                conn.close();
                        }
                        
                }
        }

}
回复 支持 反对

使用道具 举报

17

主题

62

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2019-2-17 10:18:51 | 显示全部楼层
感谢分享。好用。

我想用自己的电邮发信息,在 Baas/justep/Register.java 里把相关的smtp参数修改后,发现使用时还是用回原有的qq.com

我有没有改错地方了?
回复 支持 反对

使用道具 举报

17

主题

62

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2019-2-17 10:20:18 | 显示全部楼层
南山老妖 发表于 2019-2-17 10:18
感谢分享。好用。

我想用自己的电邮发信息,在 Baas/justep/Register.java 里把相关的smtp参数修改后,发 ...

同时发现每个验证码会同时发两份邮件。
回复 支持 反对

使用道具 举报

17

主题

62

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
QQ
发表于 2019-2-17 10:21:19 | 显示全部楼层
南山老妖 发表于 2019-2-17 10:18
感谢分享。好用。

我想用自己的电邮发信息,在 Baas/justep/Register.java 里把相关的smtp参数修改后,发 ...

以下是console的记录:

DEBUG: setDebug: JavaMail version 1.4.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL false
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465

EHLO how-cher-teos-macbook-pro.local
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "73400320"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
DEBUG SMTP: Found extension "MAILCOMPRESS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5
AUTH LOGIN
334 VXNlcm5hbWU6
MTgzNTQxMjgzOA==
334 UGFzc3dvcmQ6
dmVodmJ6ZGtjdmNnZGlnZQ==
235 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<1835412838@qq.com>
250 Ok
RCPT TO:<hcteo@singnet.com.sg>
250 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   hcteo@singnet.com.sg
DATA
354 End data with <CR><LF>.<CR><LF>
Date: Sun, 17 Feb 2019 10:12:34 +0800 (SGT)
From: 1835412838@qq.com
To: hcteo@singnet.com.sg
Message-ID: <1178619933.0.1550369561952.JavaMail.howcherteo@how-cher-teos-macbook-pro.local>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

3404
.
250 Ok: queued as
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL false
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465

EHLO how-cher-teos-macbook-pro.local
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "73400320"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
DEBUG SMTP: Found extension "MAILCOMPRESS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5
AUTH LOGIN
334 VXNlcm5hbWU6
MTgzNTQxMjgzOA==
334 UGFzc3dvcmQ6
dmVodmJ6ZGtjdmNnZGlnZQ==
235 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<1835412838@qq.com>
250 Ok
RCPT TO:<hcteo@singnet.com.sg>
250 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   hcteo@singnet.com.sg
DATA
354 End data with <CR><LF>.<CR><LF>
Date: Sun, 17 Feb 2019 10:12:34 +0800 (SGT)
From: 1835412838@qq.com
To: hcteo@singnet.com.sg
Message-ID: <2008826569.1.1550369563151.JavaMail.howcherteo@how-cher-teos-macbook-pro.local>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

3404
.
250 Ok: queued as
QUIT
221 Bye
QUIT
221 Bye
{"code":"3404"}
回复 支持 反对

使用道具 举报

29

主题

108

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
QQ
发表于 2020-1-4 15:09:31 | 显示全部楼层
这个代码好像是不支持布署到php空间
回复 支持 反对

使用道具 举报

53

主题

313

帖子

1138

积分

金牌会员

Rank: 6Rank: 6

积分
1138
QQ
发表于 2020-4-2 13:50:09 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 17:15 , Processed in 0.056021 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表