package com.tttttt.portal.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.tttttt.manager.pojo.User;
import com.tttttt.portal.util.CookieUtils;
import com.tttttt.sso.service.UserService;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@Value("${TT_TICKET}")
private String TT_TICKET;
// type : "POST",
// //url : "/service/user/doRegister",
// url : "/user/doRegister.html",
// data : {password:_password,username:_username,phone:_phone},
// dataType : 'json',
// if(result.status == "200")
/**
* 用户注册
*
* @param user
* @return
*/
@RequestMapping(value = "doRegister", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> doRegister(User user) {
// 调用sso服务注册用户
this.userService.saveUser(user);
// 封装返回数据map
Map<String, Object> map = new HashMap<>();
map.put("status", "200");
return map;
}
// type: "POST",
// url: "/service/user/doLogin?r=" + Math.random(),
// data: {username:_username,password:_password},
// dataType : "json",
// if (obj.status == 200)
/**
* 用户登录
*
* @param request
* @param response
* @param user
* @return
*/
@RequestMapping(value = "doLogin", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> doLogin(HttpServletRequest request, HttpServletResponse response, User user) {
// 声明返回的map
Map<String, Object> map = new HashMap<>();
// 调用单点登录服务,执行用户登录操作,返回ticket
String ticket = this.userService.doLogin(user);
// 判断ticket是否为非空
if (StringUtils.isNotBlank(ticket)) {
// 如果为非空表示登录成功
// 把ticket放到cookie中
CookieUtils.setCookie(request, response, this.TT_TICKET, ticket, 60 * 60 * 24, true);
// 封装返回数据
map.put("status", 200);
}
// 如果为空,表示登录失败,什么都不做
// 返回结果
return map;
}
}
package com.tttttt.sso.service;
import com.tttttt.manager.pojo.User;
public interface UserService {
/**
* 检查数据是否可用
*
* @param param
* @param type
* @return
*/
Boolean check(String param, Integer type);
/**
* 根据Ticket查询用户
*
* @param ticket
* @return
*/
User queryUserByTicket(String ticket);
/**
* 用户注册
*
* @param user
*/
void saveUser(User user);
/**
* 用户登录
*
* @param user
* @return
*/
String doLogin(User user);
}
package com.tttttt.sso.service.impl;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringU