Maven项目-实现权限

来源:互联网 发布:项链淘宝店铺照片 编辑:程序博客网 时间:2024/06/04 18:55

首先当然就是创建一个maven项目了,创建过程就不说了!~~~~~

Task_common:pom.xml配置可以在这里下载http://pan.baidu.com/s/1bpJaVFp

Task_service:pom.xml配置可以在这里下载http://pan.baidu.com/s/1qXXTxwC

Task_web:pom.xml配置可以在这里下载http://pan.baidu.com/s/1gfLAChX

注意是看t_  r_开头的表,主要是r_role_menu角色菜单,r_user_grounp用户组,r_user_role用户角色,t_group组,t_menu菜单,t_role角色,t_user用户

Ps:权限表设计这里可以参考这里http://blog.csdn.net/chexlong/article/details/37697555

第二步:话不多说,直接撸代码

这些都先简单,就不上代码了,直接来shiro的:

这是MyHandlerInterceptor :

public class MyHandlerInterceptorextends HandlerInterceptorAdapter {

 

/**

 * 视图已处理完后执行的方法,通常用于释放资源

 */

@Override

public void afterCompletion(HttpServletRequestrequest,HttpServletResponseresponse, Object handler, Exceptione)throws Exception {

super.afterCompletion(request,response,handler,e);

}

 

/**

 * 控制器的方法已经执行完毕,转换成视图之前的处理

 */

@Override

public void postHandle(HttpServletRequestrequest,HttpServletResponseresponse, Object handler,ModelAndViewmodelAndView)throws Exception {

super.postHandle(request,response,handler,modelAndView);

}

 

/**

 * 拦截器的前端,执行控制器之前所要处理的方法,通常用于权限控制、日志,其中,Object arg2表示下一个拦截器

 */

@Override

public boolean preHandle(HttpServletRequestrequest,HttpServletResponseresponse, Object handler) throws Exception {

String reqPath = request.getRequestURI().replace(request.getContextPath(),"");

System.out.println(reqPath);

return true;

}

}

 

自己配的ConsoleRealm :

public class ConsoleRealmextends AuthorizingRealm{

 

private static Logger_logger = LoggerFactory.getLogger(ConsoleRealm.class);

private @Autowired IUserMapperuserMapper;

private @Autowired IMenuMappermenuMapper;

 

/** 认证信息 */

@Override

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationTokenauthcToken)throws AuthenticationException {

UsernamePasswordToken upToken = (UsernamePasswordToken)authcToken;

String account = upToken.getUsername();

if (account !=null && !"".equals(account)) {

String password = userMapper.queryUserPassword(account);

System.out.println(password);

if(password!=null){

_logger.debug("Account Password:"+password);

return new SimpleAuthenticationInfo(account,password,getName());

}

}

return null;

}

 

/**授权信息 */  

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollectionprincipals) {

String account = (String) principals.fromRealm(getName()).iterator().next();

List<RoleModel> roles = userMapper.queryUserRoles(account);

_logger.debug("Account Roles:"+roles);

SimpleAuthorizationInfo authInfo = new SimpleAuthorizationInfo();

for(RoleModel role:roles){

System.out.println(role.getId());

System.out.println(role.getName());

List<MenuModel> menus = menuMapper.queryMenuByRoleId(role.getId());

for(MenuModel menu:menus){

System.out.println(menu.getName());

authInfo.addRole(role.getName());

String permission = menu.getPermission();

if(null !=permission &&""!=permission){

System.out.println(permission);

authInfo.addStringPermission(permission);

}

}

}

_logger.debug("AUTH_INFO:"+authInfo);

return authInfo;

}

}

 

Jsp就不写了。

OK,运行一下:

 

登陆进去看下效果:

 

在换一个账号登陆下:

 

Ps:后台主要采用的是easyui