多数业务系统的页面功能菜单设计是以三级为标准的,即一级功能菜单、二级功能菜单、三级功能菜单,通常情况下一二级功能菜单只是用于功能分类,是不具有功能访问地址的,三级菜单才是功能的真正入口,常规权限系统就是通过控制每个人员对应的功能菜单的显示与隐藏来实现权限控制。要实现细粒度权限控制,可在设计功能表时再加入第四层:页面元素,隶属于第三层功能菜单,这些页面元素用来标识功能页面中的每一个功能按钮,如增加、修改、删除、查询都可算是页面元素,在为角色分配权限时,第四层也同样纳入统一权限管理,如果有此页面元素的权限,则页面上就显示该按钮,如果没有此页面元素的功能权限,则该按钮就不会显示出来。
以上阐述引用自:http://blog.csdn.net/ycyk_168/article/details/18456631
以下主要讲解上述功能的实现:
登录信息的验证:SecurityConroller.java
@RequestMapping(value = { "/login", "/index" }, method = RequestMethod.POST)
public ModelAndView doLogin(HttpSession session, LoginForm loginForm) {
User user = userService.getUserByLoginName(loginForm.getLoginName()
.trim());
if (user != null && user.getPwd().equals(loginForm.getPwd())) {
session.setAttribute("user", user);
List<String> rights=userService.getRights(user.getId());
session.setAttribute("rights",rights);
session.setAttribute("onlineUserBindingListener", new OnlineUserBindingListener(user));
return new ModelAndView("redirect:/mainFrame.htm");
} else {
//result.reject("", "用户名或者密码不正确");
ModelAndView mv=new ModelAndView();
mv.setViewName("/login_new");
mv.addObject("loginFail", true);
return mv;
}
}
User类中包括 用户姓名 密码 id 等信息。
通过 user_id 获取该用户的功能权限。
UserServic