当前位置: 首页 > news >正文

学院网站建设进度情况说明wordpress在页面添加文章分类导航

学院网站建设进度情况说明,wordpress在页面添加文章分类导航,厦门seo蜘蛛屯,网站空间免备案自动化测试特定区域滑动实际上#xff0c;每个Web应用程序都应该有多个用户#xff0c;并且每个用户都有一些数据-帖子#xff0c;文档#xff0c;消息等等。 最明显的事情是保护这些实体免遭非这些资源合法所有者的用户获取。 不幸的是#xff0c;这不是最容易的事情。 … 自动化测试特定区域滑动 实际上每个Web应用程序都应该有多个用户并且每个用户都有一些数据-帖子文档消息等等。 最明显的事情是保护这些实体免遭非这些资源合法所有者的用户获取。 不幸的是这不是最容易的事情。 我并不是说很难它不像简单地返回资源那样直观。 当您是/record/{recordId}端点时您将立即执行对recordId的数据库查询。 只有这样才需要检查此记录是否属于当前经过身份验证的用户。 框架在这里没有帮助因为这种访问控制和所有权逻辑是特定于域的。 没有明显的通用方法来定义所有权。 它取决于实体模型和实体之间的关系。 在某些情况下它可能非常复杂其中涉及在联接表中查找用于多对多关系。 但是您应该自动执行此操作原因有两个。 首先在每个端点/控制器方法上手动执行这些检查很繁琐并且使代码难看。 其次更容易忘记添加这些检查尤其是在有新开发人员的情况下。 您可以在DAO的所有地方进行这些检查但通常应尽早失败因此这些检查应在控制器端点处理程序级别上进行。 对于Java和Spring可以使用批注和HandlerInterceptor来自动执行此操作。 在使用任何其他语言或框架的情况下也可以使用类似的方法-一些可插入的方式来描述要检查的所有权关系。 以下是放置在每个控制器方法上的示例注释 public interface VerifyEntityOwnership {String entityIdParam() default id;Class? entityType(); } 然后定义拦截器当然应将其配置为执行 Component public class VerifyEntityOwnershipInterceptor extends HandlerInterceptorAdapter {private static final Logger logger LoggerFactory.getLogger(VerifyEntityOwnershipInterceptor.class);Autowiredprivate OrganizationService organizationService;Autowiredprivate MessageService MessageService;Autowiredprivate UserService userService;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {Authentication authentication SecurityContextHolder.getContext().getAuthentication();// assuming spring-security with a custom authentication token typeif (authentication instanceof ApiAuthenticationToken) {AuthenticationData authenticationData ((ApiAuthenticationToken) authentication).getAuthenticationData();UUID clientId authenticationData.getClientId();HandlerMethod handlerMethod (HandlerMethod) handler;VerifyEntityOwnership annotation handlerMethod.getMethodAnnotation(VerifyEntityOwnership.class);if (annotation null) {logger.warn(No VerifyEntityOwnership annotation found on method {}, handlerMethod.getMethod().getName());return true;}String entityId getParam(request, annotation.entityIdParam());if (entityId ! null) {if (annotation.entityType() User.class) {User user userService.get(entityId);if (!user.getClientId().equals(clientId)) {return false;}} else if (annotation.entityType() Message.class) {Message record messageService.get(entityId);if (!message.getClientId().equals(clientId) {return false;}} // .... more}}return true;}SuppressWarnings(unchecked)private String getParam(HttpServletRequest request, String paramName) {String value request.getParameter(paramName);if (value ! null) {return value;}MapString, String pathVariables (MapString, String) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);return pathVariables.get(paramName);} } 您会看到这假定每种类型都需要自定义逻辑。 如果您的模型很简单则可以使之通用–使所有实体都使用它们都定义的getClientId()方法实现某些Owned接口。 然后只需拥有dao.get(id, entityClass); 并避免使用特定于实体的逻辑。 请注意当方法上没有注释时将显示警告-那里表示您可能已忘记添加一个方法。 某些端点可能不需要所有权检查–对于它们您可以具有特殊的IgnoreEntityOwnership批注。 关键是要做出有意识的决定不验证所有权而不是忘记所有权并引入安全问题。 我的意思可能很明显。 但是我已经看到了许多这种遗漏的例子包括生产政府项目。 就像我说的框架不会强迫您考虑这一方面因为它们不能以通用的方式做到这一点– Web框架通常与实体模型无关而ORM与控制器无关。 有处理所有这些方面的综合框架但是即使它们没有通用的机制 至少我没有意识到。 安全性包括将一套良好实践和原则应用于系统。 但是它还包括一些程序和自动化程序这些程序和自动化程序可以帮助开发人员和管理员不要忽略他们通常知道的东西而会时不时地忘记。 而且应用安全性原则越乏味则一贯地应用它的可能性就越大。 翻译自: https://www.javacodegeeks.com/2018/10/automate-access-control-user-entities.html自动化测试特定区域滑动
http://www.zqtcl.cn/news/101321/

相关文章:

  • 垂直类网站怎么做推广互联网站的建设维护营销
  • 手机网站大全排行江西省赣州市邮政编码
  • 集团网站建设建站模板seo优化工具软件
  • 大连项目备案网站网站建设一下需要多少费用
  • 松溪网站建设做网站外包
  • sdcms网站建设模板WordPress自定义连接菜单
  • 做设计常用的素材网站外贸平台销售
  • 建网站一般最低多少钱地方门户模板
  • 网站开发虚拟主机管理系统星巴克网络营销方式
  • phpnow 搭建网站网站建设一般怎么付款
  • 网站开发三剑客湖州市南浔区建设局网站
  • 江西专业的企业网站建设公司长沙做网站找哪家好
  • 国外互联网资讯网站南宁专业网站建设公司
  • 苏州新区做网站公司pc网站建设费用
  • 做影视网站需要多少钱2003网站建设
  • 河南智能网站建设哪家好重庆在建工程项目
  • 爱站网站长工具网站查看空间商
  • 网站营销活动页面制作wordpress 只显示一个主题
  • 电子网站建设怎么做秦皇岛网站制作公司
  • 网站建站模板样例平台推广怎么做
  • 网站建设首选亿企联盟做网站宣传有用吗
  • 网站建设公司行业苏州高端网站建设咨询
  • 电商平台网站开发过程江苏省建设科技发展中心网站简介
  • 空间租用 网站开发重庆手机网站推广资料
  • 新余 网站建设网站建设行业新闻
  • 做301网站打不开网上智慧团建网站
  • 四川省住房与城乡建设厅官方网站免费域名解析ip
  • 芜湖网站建设价格这么做网站原型图
  • 做传奇网站怎么弄的南京微网站开发
  • 网站建设基础教程人教版网站域名选择的原则