ユーザーログイン操作

10198 ワード

public interface LoginService {

    //  :      
    //    :
    /*
     * 1、           
     * 2、     ,      
     * 3、      token。
     * 4、       redis,key:token, value:    
     * 5、  Session     
     * 6、 token  
     */
    //   :E3Result,    token  
    E3Result userLogin(String username, String password);
}

/**
 *       
 * 

Title: LoginServiceImpl

*

Description:

* @version 1.0 */
@Service public class LoginServiceImpl implements LoginService { @Autowired private TbUserMapper userMapper; @Autowired// redis private JedisClient jedisClient; @Override public E3Result userLogin(String username, String password) { // 1、 // TbUserExample example = new TbUserExample(); Criteria criteria = example.createCriteria(); criteria.andUsernameEqualTo(username); // List list = userMapper.selectByExample(example); if (list == null || list.size() == 0) { // return E3Result.build(400, " "); } // TbUser user = list.get(0); // if (!DigestUtils.md5DigestAsHex(password.getBytes()).equals(user.getPassword())) { // 2、 , return E3Result.build(400, " "); } // 3、 token。 String token = UUID.randomUUID().toString(); // 4、 redis,key:token value: user.setPassword(null);// jedisClient.set("SESSION:" + token, JsonUtils.objectToJson(user)); // 5、 Session jedisClient.expire("SESSION:" + token, 1800); // 6、 token return E3Result.ok(token); } } @Controller public class LoginController { @Autowired private LoginService loginService; @RequestMapping("/page/login") public String showLogin(String redirect, Model model) { model.addAttribute("redirect", redirect); return "login"; } @RequestMapping(value="/user/login", method=RequestMethod.POST) @ResponseBody public E3Result login(String username, String password, HttpServletRequest request, HttpServletResponse response) { E3Result e3Result = loginService.userLogin(username, password); // if(e3Result.getStatus() == 200) { String token = e3Result.getData().toString(); // token cookie CookieUtils.setCookie(request, response, "token", token); } // return e3Result; } } , jsonp, js jquery.cookie.js jquery-1.4.2.min.js var E3MALL = { checkLogin : function(){ var _ticket = $.cookie("token"); if(!_ticket){ return ; } $.ajax({ url : "http://localhost:8088/user/token/" + _ticket, dataType : "jsonp", type : "GET", success : function(data){ if(data.status == 200){ var username = data.data.username; var html = username ; $("#loginbar").html(html); } } }); } } $(function(){ // , E3MALL.checkLogin(); }); /** * token Controller *

Title: TokenController

*/
@Controller public class TokenController { @Autowired private TokenService tokenService; /*@RequestMapping(value="/user/token/{token}", produces=MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody public String getUserByToken(@PathVariable String token, String callback) { E3Result result = tokenService.getUserByToken(token); // , jsonp if (StringUtils.isNotBlank(callback)) { // js return callback + "(" + JsonUtils.objectToJson(result) + ");"; } return JsonUtils.objectToJson(result); }*/ @RequestMapping(value="/user/token/{token}") @ResponseBody public Object getUserByToken(@PathVariable String token, String callback) { E3Result result = tokenService.getUserByToken(token); // , jsonp if (StringUtils.isNotBlank(callback)) { // js MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result); mappingJacksonValue.setJsonpFunction(callback); return mappingJacksonValue; } return result; } } /** * token */ @Service public class TokenServiceImpl implements TokenService { @Autowired private JedisClient jedisClient; @Value("${SESSION_EXPIRE}") private Integer SESSION_EXPIRE; @Override public E3Result getUserByToken(String token) { // token redis String json = jedisClient.get("SESSION:" + token); // , , if (StringUtils.isBlank(json)) { return E3Result.build(201, " "); } // token jedisClient.expire("SESSION:" + token, SESSION_EXPIRE); // ,E3Result TbUser TbUser user = JsonUtils.jsonToPojo(json, TbUser.class); return E3Result.ok(user); } }