UserController.java 2.24 KB
package com.bsth.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.security.web.authentication.session.SessionAuthenticationException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import com.bsth.entity.sys.SysUser;
import com.bsth.security.util.SecurityUtils;

@RestController
@RequestMapping("user")
public class UserController extends BaseController<SysUser, Integer>{
	
	/**
	 * 
	 * @Title: loginFailure 
	 * @Description: TODO(查询登录失败的详细信息) 
	 * @param @param request
	 * @return String    返回类型 
	 * @throws
	 */
	@RequestMapping("/loginFailure")
	public String loginFailure(HttpServletRequest request){
		String msg = "";
		HttpSession session = request.getSession();
		
		Object obj = session.getAttribute("SPRING_SECURITY_LAST_EXCEPTION");
		
		if(obj instanceof BadCredentialsException)
			msg = "登录失败,用户名或密码错误.";
		else if(obj instanceof SessionAuthenticationException)
			msg = "登录失败,当前策略不允许重复登录.";
		session.removeAttribute("SPRING_SECURITY_LAST_EXCEPTION");
		return msg;
	}
	
	/**
	 * 
	 * @Title: logout 
	 * @Description: TODO(注销吧皮卡丘) 
	 * @param @param request
	 * @return ModelAndView    返回类型 
	 * @throws
	 */
	@RequestMapping("/logout")
	public ModelAndView logout(HttpServletRequest request, HttpServletResponse response){
		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		if (auth != null){
			new SecurityContextLogoutHandler().logout(request, response, auth);
		}
		return new ModelAndView("/");
	}
	
	@RequestMapping("/currentUser")
	public SysUser currentUser(){
		return SecurityUtils.getCurrentUser();
	}
}