Maven項目-實現權限

首先當然就是創建一個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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章