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