为用户添加权限

首先登陆位置:

  public void login()
    {
        String loginAccount = ((String[])ActionContext.getContext().getParameters().get("loginAccount"))[0];
       
        User user = userService.getByAccount(loginAccount);
        ActionContext.getContext().getSession().put("login_user",user);
        Role role = user.getRole();
        
        if((user.getRole().getRoleName().indexOf("管理员") >= 0 )&&(!user.getRole().getRoleName().equals("超级管理员")))
        {
        List<Right> rights = rightService.getRightFunctionByRole(role.getRoleId());
        Map<String,String> rightMap = new HashMap<String,String>();
        for(Right right : rights)
        {
            rightMap.put(right.getFunction(), right.getFunction());
        }
        ActionContext.getContext().getSession().put("rightMap", rightMap);
        }
        else if(user.getRole().getRoleName().equals("超级管理员"))
        {
            ActionContext.getContext().getSession().put("rightMap", null);
        }
        try
        {
            if(user.getRole().getRoleName().indexOf("管理员") >= 0)
              {
                  getResponse().getWriter().write("0");
              }
              else
              {
                  getResponse().getWriter().write("7");
              }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

 

设置getRightsByRole方法(如果LAZY设置成  lazy="true")

    public List<Right> getRightsByRole(int roleId)
    {
        QueryHelper queryHelper = new QueryHelper(Role.class, "r");
        queryHelper.addCondition("roleId = ?", roleId);
        queryHelper.addOrderProperty("roleId", true);
        List<Object> parameters = queryHelper.getParameters();
        Query listQuery = getSession().createQuery(queryHelper.getListQueryHql());
        for(int i =0; i<parameters.size();i++)
        {
            listQuery.setParameter(i, parameters.get(i));
        }
        List<Role> roleList = listQuery.list();
        List<Right> rightList = new ArrayList<Right>();
        
        if(0 != roleList.get(0).getRights().size())
        {
            for(Right right : roleList.get(0).getRights())
            {
                rightList.add(right);
            }        
            return rightList;
        }
        return null;
    }

设置过滤器

public class MyInterceptot extends AbstractInterceptor
{
    
    private static final long serialVersionUID = 6645338921893814285L;
    @SuppressWarnings("unchecked")
    @Override
    public String intercept(ActionInvocation invocation) throws Exception
    {
        
        ActionContext actionContext = invocation.getInvocationContext();
        ServletContext context = (ServletContext) actionContext.get(StrutsStatics.SERVLET_CONTEXT);
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
        UserService userService = (UserService)ctx.getBean("userServiceImpl");
        
        String functionName = actionContext.getName();//获取访问的action及方法名
        Map<String, Object> session = actionContext.getSession();
        User user = (User) session.get("login_user");
        System.out.println("访问路径:" + functionName);
        Map<String, String> rightMap = null;
        if(session.get("rightMap") != null)
        {
        rightMap = (Map<String, String>)session.get("rightMap");
        }
        if(null != user)
        {
           if((rightMap == null? false : null != rightMap.get(functionName)) || "admin".equals(user.getLoginAccount()))
           {
               return invocation.invoke();
           }
           else
           {
                return "no_right";
           }
        }
        else
        {
            return "login";
        }
    }
}

  

转载于:https://www.cnblogs.com/huangweiKNOw/p/4599982.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值