# 安全访问控制
# 基于DigestURL摘要算法控制
# 使用示例
第一步:明确哪个后端MVC请求需要被Digest,比如下面这个方法:
public class CollaborationController extends BaseController {
public ModelAndView statisticSearch(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("apps/collaboration/colStatisticSearch");
String userId = request.getParameter("user_id");
// TODO
}
}
第二步:通过插件化开发,在插件配置pluginCfg.xml同级目录新增一个pluginProperties.xml文件,目录格式如下:
WEB-INF
cfgHome
plugin
collaboration
pluginCfg.xml
pluginProperties.xml
第三步:pluginProperties.xml中定义的内容如下
按照注释的描述可以大概理解到collaboration.do的statisticSearch方法中的user_id参数需要被digest,用于权限校验。
<?xml version="1.0" encoding="utf-8"?>
<ctpConfig>
<collaboration>
<security>
<!-- 需要做URL digest的URL注册,空格分隔1为uri地址,2为method(没有可以省略),3为digest参数名 -->
<digesturl>/collaboration/collaboration.do statisticSearch user_id</digesturl>
</security>
</collaboration>
</ctpConfig>
第四步(最关键步骤):所有调用collaboration.do?method=statisticSearch的地方都要在这个URl中包装一个v参数,示例代码如下:
String url = "/collaboration/collaboration.do?method=statisticSearch&user_id=" + userId + "&v=" + SecurityHelper.func_digest(userId);
# 实现原理
参考代码SpringControllerAuthenticator.checkDigestParam
创建人:het