如何通过电子邮件验证激活用户

时间:2016-02-23 18:21:15

标签: java web-services rest jax-rs restful-authentication

现在我发送的确认链接包含为用户创建的JWT令牌到收件人邮件地址。此令牌保存在数据库列中。

激活链接如下所示:

http://localhost:7070/RTH_Sample14/eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvcnRoLmNvbSIsInN1YiI6IlJUSCIsInJvbGUiOiJVU0VSIiwiZXhwIjoxNDU2MjQ1MzM2LCJlbWFpbCI6Imtpcml0aS5rOTk5QGdtYWlsLmNvbSJ9.RJ54PhKcj9GGMq_VefQEMhY0x38wX1t5GgMldHCRmBZsPKoXAYg5vr39aXjHtKmIDsoqmDdzzjsrEIweWEATg3-jGe_PGfxwKZg1zsKiWlpavvKJn92VgffJi1yO54t-H31n2NKjVhAcay34pf3eUNqpPcDCEz9uf_GwSZl1ZTM

当用户点击链接时,我希望能够调用一个宁静的资源(@Path("/public/emailActivation")),该资源检查数据库中的令牌并从" pending"更改帐户状态列。到"活跃"

问题是如何点击激活链接到休息资源方法?

这是激活/验证用户的正确方法吗?

休息登记服务:

@Path("/public/registrationService")
public class RegistrationService {

    public RegistrationService() {
    }

    @POST
    @Path("/register")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Response register(UserProfile user) {

        String email = user.getEmail();
        String token = "";

        try {
            RegistrationDAO registrationDao = new RegistrationDAO();
            int count = registrationDao.insert(user);
            if (count > 0) {
                System.out.println("Registration successful");
                TokenProvider jwtProvider = new TokenProvider();
                token = jwtProvider.getToken(email);
                Map<String, String> response = new HashMap<>();
                response.put("token", token);
                SendEmailConfirmation mailActivation = new SendEmailConfirmation();
                mailActivation.sendMail(email, "http://localhost:7070/RTH_Sample14/"+token);
                return Response.ok(response).build();
            }
            else {
                return Response.status(Response.Status.UNAUTHORIZED).type("text/plain").entity("Registration failed!").build();
            }

        } catch (Exception e) {
            e.printStackTrace();
            return Response.status(Response.Status.NOT_FOUND).type("text/plain").entity("Error in Login Service web service class").build();
        }
    }
}

当用户点击链接时,应调用此方法进行邮件激活:

@Path("/public/emailActivation")
public class EmailActivation {


    @Path("/activate")
    public void activateAccount(){
        //Check Database for token and account status
    }
}

0 个答案:

没有答案