JAVA(ssh2框架)+Flex实现权限控制方案分析
Java  /  管理员 发布于 2年前   187
目前项目使用的是Struts2+Hibernate+Spring的架构模式,目前已经有一套针对SSH2的权限系统,运行良好。但是项目有了新需求:在目前系统的基础上使用Flex逐步取代JSP,在取代JSP过程中可能存在Flex与JSP并存的情况,所以权限系统需要进行修改。
【SSH2权限系统的实现机制】
权限控制分为页面和后台两块:不同类型用户的帐号分配的访问权限是不同的,用户使用帐号登录系统以后,在页面中只能看到拥有权限的页面,并且如果用户通过浏览器直接输入链接地址,后台会判断该用户是否拥有该权限,如果没有则拒绝用户的请求。比如有个人信息管理和交易管理两个模块,管理员给用户A创建了一个帐号,并且给该帐号分配了可访问“个人信息管理”模块的权限,那么用户A登录系统后就只能看到“个人信息管理”的页面,“交易管理”页面是看不到的。那么用户可能知道访问“个人信息管理”的路径,可以在浏览器中输入请求地址,这时后台spring aop截获请求,然后判断该用户是否拥有该模块的访问权限,如果没有则抛出“没有权限”的错误消息,再通过拦截器控制直接返回到页面。
页面实现权限控制的方式比较简单:登录成功后将该用户拥有的所有权限放入session中,用户访问JSP页面时,从session中取得权限,然后在onload事件中遍历页面标签与session中的权限比对,判断标签是否有效,如果无效就不显示或者设为disable,如果有效则显示给用户。
后台实现权限控制使用了拦截器和AOP等机制:AOP过滤访问权限,无权限则抛出异常;拦截器捕获异常,最后返回相应错误消息到页面。
Spring AOP在用户访问Action某方法之前验证该用户是否拥有访问该方法的权限,如果可访问则放行,否则抛出无权限的自定义异常,随后Struts2拦截器会捕获异常,并且把“无访问权限”的错误消息发送的页面。
/** * about version :1.00 * Description :检查权限 * @throws Throwable */public Object checkPriv(ProceedingJoinPoint pjp) throws Throwable{//获取当前请求的用户信息和请求路径user = ...accessUrl = ...//调用检查权限的方法,如果验证通过则允许继续执行,否则抛出无权限的异常if (service.hasPriv(user, accessUrl)) {return pjp.proceed();} else {throw new FunctionException(Constant4OSPMSException.NO_PRIVILEGE, "user has not privilege to do this!");}}private PrivCtrlService service;/** * @return the service */public PrivCtrlService getService() {return service;}
拦截器是Struts2框架的核心,从页面发送请求到后台以及从后台返回消息到页面都会经过拦截器,其功能类似于filter。在自带的拦截器内再包一层异常拦截器,如果项目发送异常,在自定义拦截器中捕获异常信息,并且根据异常id返回相应的异常消息。
关于Flex与Java整合都说烂了:HttpService、Web Service、RemoteObject。 HttpService等同于JSP中的Ajax请求,向服务器发送请求地址,然后通过Action返回响应数据,最后通过回调的形式获取Action的响应数据。这种形式可以延续使用Struts2,但是需要重新做一套针对Flex调用的Action(因为是Ajax,没法以return的形式重定向了) Web Service除非跨语言、跨项目,通常不常用。
nkt 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 用了三分钟就被禁了,直接阿里云服务器22端口都禁了..熊丽 在
安装docker + locust + boomer压测环境实现对接口的压测中评论 试试水..博主 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 @test 也可能是国内大环境所至,也是好事,督促你该研究学习新技术..test 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 打了一次网页,然后再也打不开了。。是阿里云的缘故吗?..博主 在
centos7中Meili Search搜索引擎安装流程步骤中评论 @鹿 执行以下命令看看你的2.27版本是否存在strin..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号