短信验证码登录
- 首先去阿里云服务器开通短信服务功能,进入短信服务界面
- 点击国内消息,申请一个签名和模板
- 申请一个AccessKey,并且将短信服务的权限加入其中
- 加入相关的依赖
<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>
- 接下来利用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();
}
}
}
- 接下来实现生成验证码,并将生成的验证码存入缓存中,并且调用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