[测评系统]--测评系统核心代码库
zhijie
2023-11-06 7a27a477d2369261dad711decfb8ebb198c8c931
1
2
3
4
5
6
7
8
9
10
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
package com.ots.project.system.user.controller;
import com.ots.common.utils.ServletUtils;
import com.ots.common.utils.StringUtils;
import com.ots.framework.web.controller.BaseController;
import com.ots.framework.web.domain.AjaxResult;
import com.ots.project.tool.exam.DecryptUtil;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@Controller
public class LoginController extends BaseController {
    @GetMapping("/login")
    public String login(HttpServletRequest request, HttpServletResponse response) {
        String lang = request.getParameter("lang");
        String noLogin = "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}";
        if("zh_CN".equals(lang)){
            noLogin = "";
        }else if("en_US".equals(lang)){
            noLogin = "";
        }
 
        if (ServletUtils.isAjaxRequest(request)) {
            return ServletUtils.renderString(response, noLogin);
        }
        return "login";
    }
    @PostMapping("/login")
    @ResponseBody
    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) {
        try {
            byte[] bytes = "db2139561c9fe068".getBytes();
            byte[] data  = Hex.decodeHex(password.toCharArray());
            byte[] s = DecryptUtil.AES_CBC_Decrypt(data, bytes, bytes);
            password = new String(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
        UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
        Subject subject = SecurityUtils.getSubject();
        try {
            subject.login(token);
            return success();
        } catch (AuthenticationException e) {
            String msg = "用户或密码错误";
            if (StringUtils.isNotEmpty(e.getMessage())) {
                msg = e.getMessage();
            }
            return error(msg);
        }
    }
    @GetMapping("/unauth")
    public String unauth() {
        return "error/unauth";
    }
}