您的位置:首页 > 编程语言 > Java开发

SpringMVC+MyBatis项目总结(四)

2015-06-09 20:33 1061 查看
这次用mybatis+SpringMVC做图书系统,第一次做了权限控制。

数据库表还是用户--角色--权限,用户和角色多对一关系,角色和权限多对多关系(增加一张中间表)

在业务层声明一个方法,通过角色id查询对应的权限,在拦截器中调用。

权限表存的是各个action的地址,通过中间表吧角色和权限表关联起来

拦截器配置如下:

<mvc:annotation-driven/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="userInSession" class="cn.edu.bjut.zj.tims.command.interceptor.UserInSession"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="authority" class="cn.edu.bjut.zj.tims.command.interceptor.Authority"/>
</mvc:interceptor>
</mvc:interceptors>

其中userInsession是登陆验证拦截器,Authority则是权限拦截器,代码如下

public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
if(arg0.getServletPath().contains("login")||arg0.getServletPath().contains("exit"))
return true;//对登陆和退出操作放行
List<cn.edu.bjut.zj.tims.entity.Authority> list = biz.queryAuthorityByRole(((UserExtend)arg0.getSession().getAttribute("loginUser")).getRoleid());
for (cn.edu.bjut.zj.tims.entity.Authority s : list) {
if(s.getActionname().contains(arg0.getServletPath()))
return true;
}
arg0.getRequestDispatcher("../error/noAuthority.jsp").forward(arg0, arg1);
return false;
}

这样就简单的实现了权限验证,但是用户具有修改个人信息,不能修改其他用户信息的这种拦截器没想好怎么设计,还要在查找资料看看了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息