读书人

球高手struts(拦截器)实现登录权限

发布时间: 2012-02-21 16:26:23 作者: rapoo

球高手,struts(拦截器)实现登录权限验证。

用户登陆,且必须为指定权限的用户才可以查看系统中某个视图资源,否则,提示用户没有权限,并且跳转到系统首页。
0.使用struts2拦截器。
1.一个人员只能拥有一种权限;
2.权限分为管理员、操作员、超级管理员三种;
3.超级管理员可以查看系统下的所用功能模块;管理员可以查看除人员管理外的功能模块;操作员只能打开个人信息管理页面;


这个我现在就做了个登录,后面这里如何拦截就不会了。因为以前也没有涉及过此类题目,高手们给点思路 。

[解决办法]

HTML code
<interceptors>            <interceptor name="loginedCheck" class="com.natures.core.web.interceptor.LoginedCheckInterceptor"/>            <interceptor-stack name="iframeStack">                   <interceptor-ref name="loginedCheck"></interceptor-ref>                 <interceptor-ref name="defaultStack"></interceptor-ref>            </interceptor-stack>                   </interceptors>                    <!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器 默认的拦截器将无效 -->          <default-interceptor-ref name="iframeStack"></default-interceptor-ref>
[解决办法]
利用数据库的表啊
用户表中增加一个字段JUR(权限)number类型
管理员1
普通用户2
超级管理员0
登陆时验证用户名密码信息的时候,顺便验证JUR信息。通过此字段来控制跳转
[解决办法]
可以好好利用struts2的优点,实现权限监听
可以这样做
假如权限存储在一个表中,
或者说用户表只有一个
1、写一个监听类
package com.interceptor;
import com.fdr.pojo.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.util.*;
public class UserLoginInterceptor extends AbstractInterceptor
{
public String tip;
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
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 invocation.invoke();
}else{
ctx.put("tip" , "请登录!");
setTip("请登录!");
//return Action.LOGIN;
return "userLogin";
}
}
}
第二步,写个struts2的配置文件,也就所谓的xml,
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 定义含“权限检查拦截器”的包,供其他模块引用 -->
<package name="struts-default-with-auth-check" extends="struts-default" >
<interceptors>
<!-- 定义“权限检查拦截器” -->
<interceptor name="userCheck"
class="com.interceptor.UserLoginInterceptor">
</interceptor>

<!-- 定义含“权限检查拦截器”的拦截器栈,注意缺省的拦截器栈“defaultStack”要放在前面 -->
<interceptor-stack name="userStack">
<!-- <interceptor-ref name="defaultStack" /> -->
<interceptor-ref name="userCheck"></interceptor-ref>
</interceptor-stack>

</interceptors>
<!-- 正式应用可能含很多package,为了能从其他package中跳转到登录页面,把登录页面定义成全局result
<default-interceptor-ref name="userStack"></default-interceptor-ref>
-->
<global-results>
<result name="userLogin">login.jsp</result>
<result name="adminLogin">login.jsp</result>


</global-results>
</package>
</struts>
第三补
其他的xml都继承这个xml
然后再xml的action中加入
<interceptor-stack name="userStack"/>
就OK了

读书人网 >Java Web开发

热点推荐