spring.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 指定Spring配置文件的Schema信息 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/s ... ing-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<bean id="queryAction" class="action.QueryAction">
<property name="resultTxtReposity">
<ref bean="resultTxtReposity" />
</property>
</bean>
<bean id="login" class="action.LoginAction">
<property name="userReposity">
<ref bean="userReposity" />
</property>
</bean>
<bean id = "authorityBean" class="action.core.LoginInterceptor">
<property name="userReposity">
<ref bean="userReposity" />
</property>
</bean>
</beans>
LoginInterceptor.java
package action.core;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import reposity.UserReposity;
import action.LoginAction;
import action.service.UserService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import entity.User;
@SuppressWarnings("serial")
public class LoginInterceptor extends AbstractInterceptor {
private UserReposity userReposity;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
Cookie[] cookies = ServletActionContext.getRequest().getCookies();
//session判断当前用户是否登陆
if(session.getAttribute("uflag") != null &&
LoginAction.ISLOGIN == Integer.valueOf(session.getAttribute("uflag").toString())){
return invocation.invoke();
}
if(cookies == null) return invocation.invoke();
//获取cookie
String username = null, password = null, rememberme = null;
for (Cookie cookie : cookies) {
if(cookie.getName().equals("user")){
username = cookie.getValue();
}
if(cookie.getName().equals("cookie")){
password = cookie.getValue();
}
if(cookie.getName().equals("rememberme")){
rememberme = cookie.getValue();
}
}
if(username == null || password == null || !LoginAction.REMEMBER_ME.equals(rememberme)){
return Action.LOGIN;
}
//验证cookie的有效性
User user = UserService.findUser(userReposity, username, password);
if(user != null){
session.setAttribute("uflag",1);
session.setAttribute("acount",user);
return invocation.invoke();
}
return Action.LOGIN;
}
public UserReposity getUserReposity() {
return userReposity;
}
public void setUserReposity(UserReposity userReposity) {
this.userReposity = userReposity;
}
} |