求struts2权限控制实例
谁帮我写个用struts2控制用户登录权限的实例,要求:只能是登录用户才能进入某些页面,否则转入登录页面。...
谁帮我写个用struts2控制用户登录权限的实例,
要求:只能是登录用户才能进入某些页面,否则转入登录页面。 展开
要求:只能是登录用户才能进入某些页面,否则转入登录页面。 展开
4个回答
展开全部
这是我以前写的最简单的一个拦截器 登陆以后要存一个参数ssid(用户ID) 到 session里
拦截器里面的"noid" 你只要在struts.xml中设置一个全局的转发错误的页面或者返回到登陆页面就好了:
如:(
<global-results>
<!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
<result name="noid" type="redirect">/noid.jsp</result>
</global-results>
)
拦截器代码:
package com.jihe.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class MyInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
if (null != session.get("ssid")) {
return invocation.invoke();
} else {
return "noid";
}
}
}
然后在sturt.xml中配置拦截器(我设置的是全局的,如果你用可能会出现问题,因为你设置这个拦截器以后在登陆时的ssid肯定是null,所以要把不需要拦截器验证的action放到别的package里如: <package name="struts2.1" extends="struts-default"> )
<package name="struts2" extends="struts-default" >
<interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="authority"
class="com.jihe.interceptor.MyInterceptor" />
<!-- 定义一个包含权限控制的拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" />
</package>
如果看实在不会用的话 就用过滤器写吧! 过滤器应该会吧!
拦截器里面的"noid" 你只要在struts.xml中设置一个全局的转发错误的页面或者返回到登陆页面就好了:
如:(
<global-results>
<!-- 逻辑名为login的结果,映射到/login.jsp页面 -->
<result name="noid" type="redirect">/noid.jsp</result>
</global-results>
)
拦截器代码:
package com.jihe.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class MyInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
if (null != session.get("ssid")) {
return invocation.invoke();
} else {
return "noid";
}
}
}
然后在sturt.xml中配置拦截器(我设置的是全局的,如果你用可能会出现问题,因为你设置这个拦截器以后在登陆时的ssid肯定是null,所以要把不需要拦截器验证的action放到别的package里如: <package name="struts2.1" extends="struts-default"> )
<package name="struts2" extends="struts-default" >
<interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="authority"
class="com.jihe.interceptor.MyInterceptor" />
<!-- 定义一个包含权限控制的拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" />
</package>
如果看实在不会用的话 就用过滤器写吧! 过滤器应该会吧!
展开全部
用户登录后将其放入ActionContext里
ActionContext.getContext().put("user",user);
然后在自己写拦截器或过滤器取出user比对就可以了
ActionContext.getContext().put("user",user);
然后在自己写拦截器或过滤器取出user比对就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个需要300分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询