短信验证码登录,以及第三方登录

本文介绍了如何实现短信验证码登录,包括开通阿里云短信服务、申请AccessKey、添加依赖并编写验证代码,以及验证码的生成与校验流程。同时,文章还详细讲解了第三方登录的设置,如申请QQ互联权限,配置相关依赖,创建HTTP工具类和登录Controller,最后展示了登录界面的效果。
摘要由CSDN通过智能技术生成

短信验证码登录

  1. 首先去阿里云服务器开通短信服务功能,进入短信服务界面
    在这里插入图片描述
  2. 点击国内消息,申请一个签名和模板
    在这里插入图片描述
    在这里插入图片描述
  3. 申请一个AccessKey,并且将短信服务的权限加入其中
    在这里插入图片描述
  4. 加入相关的依赖
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>1.0.0</version>
        </dependency>
  1. 接下来利用Open API生成使用服务的代码
@Component
public class Message {
   



    public static void messagePost(String mobile, String message){
   
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "******************", "******************");
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers",mobile);
        request.putQueryParameter("SignName", "校园帮手");
        request.putQueryParameter("TemplateCode", "SMS_191485017");
        request.putQueryParameter("TemplateParam", "{\"code\":"+message+"}");
        try {
   
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
   
            e.printStackTrace();
        } catch (ClientException e) {
   
            e.printStackTrace();
        }
    }
}
  1. 接下来实现生成验证码,并将生成的验证码存入缓存中,并且调用Message类发送短信。
    public Result<Boolean> authcode_get(LoginVo loginVo) {
   
        String mobile=loginVo.getMobile();
        String password = "1" + RandomStringUtils.randomNumeric(5);//生成随机数,我发现生成5位随机数时,如果开头为0,发送的短信只有4位,这里开头加个1,保证短信的正确性
        redisService.set(UserKey.getBymobile,mobile, password);//将验证码存入缓存
        Message.messagePost(mobile, password);//发送短息
        return Result.success(true);
    }

接下来获取前端传来的手机号以及输入的验证码,并与存入缓存中的验证码做校验,登录。

    public Result<Boolean
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值