9f8d4cd39cfac18e46cfc4d81e290fce6462caa3.svn-base 2.9 KB
package com.espeed.action;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;

import com.espeed.centre.pojo.YxyUserInfo;
import com.espeed.log.LogClass;
import com.espeed.service.YxyUserInfoService;
import com.espeed.tool.ConfigPath;
import com.opensymphony.xwork2.ActionContext;

/***
 * 
 * @author 谢勇
 * 登录action
 */
public class YxyLoginAction extends BaseAction{
	private static final long serialVersionUID = 1L;

	/**登录*/
	public String YxyLogin(){
		try {
//			System.out.println("token:"+token);
//			System.out.println("secretKey:"+secretKey);
//			System.out.println("tokenId:"+tokenId);
//			System.out.println("tokenSubject:"+tokenSubject);
			response.setHeader("Access-Control-Allow-Origin", "*");
			//获取用户session
			ActionContext ac = ActionContext.getContext();
			Map<String,Object> sess = ac.getSession();			
//			YxyUserInfo user=(YxyUserInfo) sess.get("yxyuser");
//			if(user!=null){//已经登录
//				return SUCCESS;
//			}else{
				Claims claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody();
				if(null == claims.getId() || !claims.getId().trim().equals(tokenId)){
					return "loginerro";
				}
				if(null == claims.getSubject() || !claims.getSubject().trim().equals(tokenSubject)){
					return "loginerro";
				}
				loginid = claims.get("loginid", String.class);
				domain = claims.get("domain", String.class);
				//判断用户是否存在
				List<YxyUserInfo> userlist=yxyuserinfoservice.findVerificationUser(loginid, domain);
				if(userlist.size()>0){
					userlist.get(0).setDomain(domain);
		            sess.put("yxyuser", userlist.get(0));
					return SUCCESS;
				}else{
					return "loginerro";
				}
//			}
		} catch (Exception e) {
			StringWriter sw = new StringWriter();
			e.printStackTrace(new PrintWriter(sw, true));
	        String str = sw.toString();
	        LogClass.errolog(str,loginid+"@"+domain);
	        return "loginerro";
		}
	}
	
	private YxyUserInfoService yxyuserinfoservice;//用户信息service 
	private String loginid="erro";
	private String domain="erro";
	private String token;//webmail跳转过来带的token
	private String secretKey=ConfigPath.getSecretKey();
	private String tokenId=ConfigPath.getTokenId();
	private String tokenSubject=ConfigPath.getTokenSubject();
	public String getToken() {
		return token;
	}
	public void setToken(String token) {
		this.token = token;
	}
	public String getLoginid() {
		return loginid;
	}
	public void setLoginid(String loginid) {
		this.loginid = loginid;
	}
	public String getDomain() {
		return domain;
	}
	public void setDomain(String domain) {
		this.domain = domain;
	}
	public YxyUserInfoService getYxyuserinfoservice() {
		return yxyuserinfoservice;
	}
	public void setYxyuserinfoservice(YxyUserInfoService yxyuserinfoservice) {
		this.yxyuserinfoservice = yxyuserinfoservice;
	}
}