<p>通过JFinal 框架,ajax跨域请求。</p><p>后台代码:</p><p><pre name="code" class="java"> public void dologin() {
JSONObject json = new JSONObject();
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(getPara("account"),
EncryptionKit.md5Encrypt(getPara("password")));
try {
// 4、登录,即身份验证
subject.login(token);
String from = getPara("from");
String findSql = "(1=1) and ";
// 获取信息
String account = token.getUsername();
if (account != null)
findSql += "account like '" + account + "' and ";
findSql += " (1=1);";
SysUser data_need = SysUser.dao.where(findSql).get(0);
int Id = data_need.getInt("id");
json.put("id", Id);
json.put("account", Account);
if ("1".equals(is_app)) {
//app端登录session不过期
subject.getSession(true).setTimeout(-1);
renderJson("jsonpCallback({\"data\":"+json.toJSONString()+"})");
// renderJson(putjson("0", data, "success"));
} else {
subject.getSession(true).setTimeout(60*60*1000);
if (StringKit.isBlank(from))
redirect("/");
else {
redirect(from);
}
}
} catch (AuthenticationException e) {
// 5、身份验证失败
if ("1".equals(is_app)) {
renderJson(putjson("330", "", "failed"));
} else {
alertAndGoback("用户名或密码错误,请重新登录");
}
}
}
前台代码:
function doLogin(account,password){
$.ajax({
url : "http://localhost:10080/Passport/dologin",//baseURL
data : {
is_app : 1,
account : account,
password : password,
},
type : "post",
//crossDomain: true,
dataType : "jsonp",
jsonp : "callback",
jsonpCallback:"jsonpCallback",
success : function(data) {
var temp = (data.data.id);
location.href="http://www.baidu.com";
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
return false;
}
});
}