java权限的问题
在页面级可以用自定义标签根据权限来显示页面元素。那么后台方法级还要做权限控制吗(如用拦截器)。页面上只是隐藏入口,如果方法级不做控制,输入对应的url还是能进入方法的。
------解决方案--------------------
拦截器代码给你参考:
package com.crm.action;
import java.util.Map;
import com.crm.entity.SysRight;
import com.crm.entity.SysUser;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class SysUserInterceptor extends AbstractInterceptor{	
	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		//得到调用的方法名
		String methodName = arg0.getProxy().getMethod();
		//如果是login方法则不做权限验证
		if(!methodName.equals("login")){
			//得到session
			Map session = arg0.getInvocationContext().getSession();
			//得到parameters(得到提交过来的authorizeId权限编号)
			Map parameters  =  arg0.getInvocationContext().getParameters();
			SysUser user = (SysUser)session.get("user");
			if(user==null || parameters==null){
				return "message";
			}
			//得到权限编号
			String rigthCode[] = (String[])parameters.get("rigthCode");
			if(rigthCode!=null){
					//遍历当前用户所有的权限
					boolean flag = false;
					for(SysRight right:user.getUserRole().getSetrRights()){
						if(right.getRightCode().equals(rigthCode[0])){
							flag = true;
							break;
						}
					}
					if(!flag){
						return "message";
					}
				}	
			}
		arg0.invoke();
		return null;
	}
}