防止未登录进行操作 解决登录页面内嵌问题
防止未登录进行操作?? 解决登录页面内嵌问题
1.进入登录的action时将登录信息保存在session里面
2.写一个拦截器如下
public class UserLoginInterceptor extends AbstractInterceptor {
?@Override
?public String intercept(ActionInvocation invocation) throws Exception {
??ActionContext ctx = invocation.getInvocationContext();
??Map session = ctx.getSession();
??User user = (User)session.get("user");
??if(user==null){
???return "login";
??}else{
??????????? return invocation.invoke();???
??}
?}
}
3.配置拦截器
<!-- 配置一个admin-default包,包含了自己设置的用于未登录的拦截器和一些全局参数 -->?
?<package name="admin-default" extends="struts-default">
???? <interceptors>
???????? <interceptor name="userLogin" />
???????? <interceptor-stack name="adminDefaultStack">
????????????? <interceptor-ref name="userLogin" />
????????????? <interceptor-ref name="defaultStack" />
???????? </interceptor-stack>
???? </interceptors>
???? <default-interceptor-ref name="adminDefaultStack" />
???? <global-results>
???????? <result name="login">/WEB-INF/admin/nosession.jsp</result>
???? </global-results>
?</package>
4.配置需要拦截的action,将这些action放在一个或多个package里面,package的配置如下:
<package name="admin" extends="admin-default">
这个package要继承第三步配置的包
?
5.拦截后不直接跳转到登录页面,而是先跳到nosession.jsp页面
<html>
?<head>
??<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
??<title>Insert title here</title>
?</head>
?<body>
??<script type="text/javascript">
?????? window.parent.location = "login.jsp";
??????? </script>
?</body>
</html>
6.这样就不会出现登陆页面内嵌的问题了
?
?
?
来自:http://blog.sina.com.cn/s/blog_6145ed810100h4he.html