浏览 1681 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-22
把权限检查的代码重新梳理了一番,写成了若干个静态方法,全放到一个类里。 然后每个方法开始前if检查。 if(isAdmins and isCategory), if(isAdmins or isCategory). -------------- 今天突发奇想,不想if, 而是设置一个拦截器栈, mustAdmins(); mustCategory(); if(can) do; 或者 orAdmins(); orCategory(); if(can) do; 原理是类设置一个标志,三种状态。 cant,stop; ok,stop; cant,continue; 然后must方法成功时,返回continue, 失败时返回cant, or方法成功时返回ok, 失败时返回continue。 方法内部遇到cant,或ok,停止检查。 -------------- 比较: 新方法在最后判断, 旧方法在开始判断。 但新方法内部大量充斥if。(内部开头需判断,遇到cant或ok必须停止。) 新方法是因为不想用if,结果最后还是要if,只是这个if总是固定写if(can). 外层代码看起来简洁些。像一个拦截器栈,或通过,或禁止,或继续考察。 -------------- 另外一方面, 也想到当前用户的存储新位置, 可以把当前用户放在这个静态类里, 当登陆时注入到这个类,当登出时重置。 这样不放在session中, 整个应用程序,每次只能一个人登陆??? 因为整个应用程序,Action和这个类都是单例?? 那么前面类的通行标志也应该放在session中?? 脑袋开始糊涂,暂时不用这个“学中锁”。 by hxzon 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |