最近碰到的一些关于webx的问题

 问题一:由于一个action未进行验权而导致的问题

  背景:

  1. 在进行一个业务逻辑操作的过程中,对于一个用户如果没有某个操作的权限,我们通常会将其引导到权限申请页面或者用户信息完善页面;

  2. 用户访问一次页面发送一次请求,线程变量就会记录该次用户的登录信息;

  3. 而当用户访问一些页面的时候是可以跳过这些用户的登录信息的,比如用户信息完善页面;

  问题描述:

  1. 一个用户访问到其没有权限的一个操作时,系统引导其到一个用户信息页面同时将其访问的页面以redirect参数的形式带在链接上,而用过webx的同学应该知道,对于action的调用,一般是直接将action参数和event参数直接挂在连接上,当然这也是这个问题出现的主要原因;

  2. 用户到用户信息页面后,由于这个页面不需要验证用户的登录信息,加上连接上的action和event参数,就直接跳过了请求阀门中进行验权的操作,而直接进入action的主题函数中,而action本身是没有进行权限验证的,导致业务逻辑被执行,问题也就产生了;

  3. 由于没有进行用户登录信息验证,使得线程变量池记录的是上一次用户登录的信息,导致日志记录操作人也出错。

  解决方案:

  1. 请求结束后及时清掉用户信息,每一次请求都会重新去session中去取用户信息;

  2. 针对权限点验证,除了在请求阀门中验证以外,对于有暴露不需要验权页面的系统,需要在重要的action中也进行验权处理;

  3. 针对action提交操作,除了添加验权外,也可以添加token来防止链接被人误操作;

问题二:关于webx中的vm中引入control的两种方式:$control.setTemplate()与#parse()的区别

  webx的vm模板分为screen 展现页面的主题部分,layout用于系统的布局和结构,control用于承载系统中共用的部分;

  webx中既可以通过#parse()引用control,也可以通过$control.setTemplate()引用;

  #parse()是velocity层面的引用,father.vm 通过#parse(son.vm)引用了son.vm模板之后,可以理解为son.vm是father.vm的一部分,son.vm如果有对应后端处理逻辑,是不会被执行的,但是son.vm中可以共用father.vm的参数变量;

  $control.setTemplate()是webx层面提供的一种control引用方式,father.vm通过$control.setTemplate(son.vm)引用了son.vm之后,father.vm会进行顺序解析,在解析到$control.setTemplate()的时候,会进行到son.vm模板中去进行解析,所以会执行son.vm所对应的后端处理逻辑;同时,son.vm中不能使用father.vm中的参数,如果需要将father.vm中的变量共享到son.vm,可以通过setParameter()传入son.vm中。

  简而言之:

  1. #parse()是velocity层面,$control.setTemplate()是webx层面

  2. #parse()不会执行引用vm的后端逻辑,$control.setTemplate()会执行

  3. #parse()引用vm与被引用vm共享参数变量集,$control.setTemplate()如需共享,需要传入

转载于:https://www.cnblogs.com/sunloc/p/3249342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值