2017-03-16 21:22
/**
* Add Routes
*/
public Routes add(Routes routes) {
routes.config();
routesList.add(routes);
return this;
}
/**
* Add route
* @param controllerKey A key can find controller
* @param controllerClass Controller Class
* @param viewPath View path for this Controller
*/
public Routes add(String controllerKey, Class controllerClass, String viewPath) {
routeItemList.add(new Route(controllerKey, controllerClass, viewPath));
return this;
}@linkzz @zzhkiller @JFinal @EATI001 应该是这段话
2017-03-16 20:44
@EATI001 @JFinal 我看了源码 发现 shiro 应该不支持的,
/**
* Add Routes
*/
public Routes add(Routes routes) {
routes.config();
routesList.add(routes);
return this;
}
/**
* 构造函数
* @param routes 路由设定
*/
public ShiroPlugin(Routes routes){
this.routes = routes;
}
这个改成
/**
* 构造函数
* @param routes 路由设定
*/
public ShiroPlugin(LIST routes){
this.routes = routes;
}
ShiroPlugin 插件 改成 list 遍历 每一个 routes 应该就可以了
2017-03-16 20:40
@EATI001 @EATI001
for (Routes.Route route : routes.getRouteItemList()) {
Class controllerClass = route.getControllerClass();
String controllerKey = route.getControllerKey();
// 获取Controller的所有Shiro注解。
List controllerAnnotations = getAuthzAnnotations(controllerClass);
// 逐个遍历方法。
Method[] methods = controllerClass.getMethods();
for (Method method : methods) {
//排除掉Controller基类的所有方法,并且只关注没有参数的Action方法。
if (!excludedMethodName.contains(method.getName())
&& method.getParameterTypes().length == 0) {
//若该方法上存在ClearShiro注解,则对该action不进行访问控制检查。
if(isClearShiroAnnotationPresent(method)){
continue;
}
//获取方法的所有Shiro注解。
List methodAnnotations = getAuthzAnnotations(method);
//依据Controller的注解和方法的注解来生成访问控制处理器。
AuthzHandler authzHandler = createAuthzHandler(
controllerAnnotations, methodAnnotations);
//生成访问控制处理器成功。
if (authzHandler != null) {
//构建ActionKey,参考ActionMapping中实现
String actionKey = createActionKey(controllerClass, method, controllerKey);
//添加映射
authzMaps.put(actionKey, authzHandler);
}
}
}
} 其中 获取不到 routes.getRouteItemList() new FrontRoutes() 的action