审查视图

src/main/java/com/tianbo/warehouse/controller/AnonymousController.java 3.1 KB
朱兆平 authored
1 2 3 4 5 6 7 8 9
package com.tianbo.warehouse.controller;

import com.alibaba.fastjson.JSON;

import com.google.code.kaptcha.impl.DefaultKaptcha;

import com.thoughtworks.xstream.core.util.Base64Encoder;
import com.tianbo.warehouse.controller.response.ResultJson;
import com.tianbo.warehouse.model.ROLE;
10
import com.tianbo.warehouse.model.Token;
朱兆平 authored
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
import com.tianbo.warehouse.service.RoleService;

import com.tianbo.warehouse.util.RedisUtils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;

@Slf4j
@RestController()
@RequestMapping("/anonymous")
public class AnonymousController {

    @Autowired
    RoleService roleService;

    @Autowired
    RedisUtils redisUtils;

    @Autowired
    private  DefaultKaptcha captchaProducer;

    /**
     * 配置匿名者可以访问的路由,并更新到redis,匿名者默认可以访问的role_name =ROLE_anonymous
     * 此方法会将所有符合权限组名=ROLE_anonymous的权限更新到redis中,供gateway调用判断权限
     * @return
     */
    @PostMapping("initAnonymousRoute")
    public ResultJson initAnonymousRoute(){
        List<ROLE> list = roleService.getROLE_anonymousPermList();
        String json = JSON.toJSONString(list);
        boolean result= redisUtils.set("ROLE_anonymous_routers", json,0);
        return result  ? new ResultJson("200","匿名者权限配置成功") :new ResultJson("500","匿名者权限配置失败");
    }

    /**
     * 生成验证码
     */
    @RequestMapping(value = "/randCode")
    public ResultJson getRandCode(){
        // 生成自定义验证码文字
        Random random = new Random();
        int num1 = random.nextInt(100);
        int num2 = random.nextInt(100);
        int sum = num1 + num2;
        System.out.println("验证码答案为: = " + sum);
        String capText = num1 + " + " + num2 + " = ";
        // 获取验证码上的文字
        //        String capText = captchaProducer.createText();
        //  将文件渲染到图片上
        BufferedImage bi = captchaProducer.createImage(capText);
        ByteArrayOutputStream outputStream = null;
        outputStream = new ByteArrayOutputStream();
        Base64Encoder encoder = new Base64Encoder();
        Map<String,Object> map = new HashMap<>();
        String verifyToken = "";
        try {
            verifyToken =  UUID.randomUUID().toString();
78
            redisUtils.set(Token.VERIFY_TOKEN_KEY + verifyToken,String.valueOf(sum),120);
朱兆平 authored
79 80 81 82 83 84 85 86 87 88
            ImageIO.write(bi, "jpeg", outputStream);
            map.put("verifyImg","data:image/jpeg;base64,"+encoder.encode(outputStream.toByteArray()));
        } catch (IOException e) {
            e.printStackTrace();
            return new ResultJson("500","verify get error");
        }
        return new ResultJson("200","verify get ok",map,verifyToken);

    }
}