- 浏览: 284547 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (163)
- ETL (4)
- Oracle (24)
- Win (2)
- Apache (5)
- struts2 (1)
- ArcGIS (21)
- Java (17)
- other (6)
- JavaScript (4)
- Xml (4)
- c# (2)
- webSphere (5)
- Ext (2)
- Flex (35)
- Svn (3)
- tomcat (3)
- MyEclipse (4)
- MySQL (2)
- ibatis (2)
- log4j (4)
- spring (1)
- SqlServer (2)
- android (4)
- ios (3)
- SDE (2)
- mac (1)
- Linux (9)
- Mina2 (1)
最新评论
-
markss:
您好,请问kettle循环处理的内存泄漏问题是否已经解决了?毕 ...
Kettle -
1qqqqqq:
图呢 ???
Myeclipse 9.0集成FLASH BUILDER 4.5 -
hanyi366:
现在MyEclipse 都2014版了,好像MyEclipse ...
Visual Editor 插件 安装 -
cnjmwr:
MyEclipse8.6的Eclipse版本是3.5的 ve1 ...
Visual Editor 插件 安装 -
cloudphoenix:
大神 我特地登陆来回帖,真是帮了我的大忙了。看了一个多月的AS ...
FlexGlobals.topLevelApplication
FLEX使用remoteobject交互结合spring AOP思想控制项目权限
本文介绍如何用FLEX+SPRING 使用remoteobject交互方式, 而不是用HttpService,URLRequest方式控制用户权限。
remoteobject交互效率高, 因此选用该方式开发项目并探讨如何控制权限。
FLEX项目不同于传统的WEB B/S设计,不能像struts那样方便存取权限于session中。
网上有文章介绍可以把用户权限状态存储在FLEX 全局变量中,把安全性的东西放在客户端多少有点不够妥善,
如果FLEX被反编译,造成损失, 后悔也没用啊。。。
这里的思路是把权限通过FlexContext存储在服务器session中, FLEX 调用逻辑业务的时候再从SESSION中调用判断,
如果有很多业务需要调用,一个一个判断不但繁琐, 而且造成代码冗余,
不像struts调用excute或者直接设置拦截器那么方便, 所以使用AOP技术编写拦截器即可判断所有方法的调用权限。
看代码吧:
1.WEB.XML配置
<!-- 这个需要配置, 否则FlexContext将不能得到服务器SESSION-->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
2.applicationContext.xml配置(考虑使用ProxyFactoryBean配置拦截器, 网上查了很多资料, 但是似乎只能指定一个类,
有知道的朋友请指教:) 向前, 向后拦截器不能控制方法的运行, 所以使用环绕拦截器。
expression中指定的是逻辑层的接口路径, 包括所有的逻辑业务方法, 但需要排除checkLogin方法的拦截,
用“and not”连接指定详细路径。)
<!-- 配置拦截器 (实现权限判断管理功能)-->
<bean id="authInterceptor" class="cn.flex.web.util.AuthPermission">
</bean>
<aop:config>
<aop:aspect id="authI" ref="authInterceptor">
<aop:pointcut id="logicMethods" expression="execution (* cn.flex.logic.service.*.*(..)) and not execution
(* cn.flex.logic.service.UserService.checkLogin(..))"/>
<aop:around pointcut-ref="logicMethods" method="testAuth" />
</aop:aspect>
</aop:config>
下面是后台类代码:
3. 拦截器代码
import org.aspectj.lang.ProceedingJoinPoint;
import flex.messaging.FlexContext;
public class AuthPermission {
public Object testAuth(ProceedingJoinPoint point) throws Throwable {
String user = (String)FlexContext.getFlexSession().getAttribute("userName");
if(user != null){
System.out.println("executing...");
return point.proceed();
}else {
System.out.println("You have no permission...");
return null;
}
}
}
4. 逻辑业务管理类代码, 所有与flex交互的类都继承该类, 这样可以方便调用逻辑层的所有业务
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import cn.flex.logic.service.UserService;
import cn.flex.logic.service.base.ServiceManager;
import flex.messaging.FlexContext;
public class BaseLogicImpl {
private ServiceManager srvManager;
public HttpServletRequest getRequest() {
return FlexContext.getHttpRequest();
}
public HttpSession getSession() {
return FlexContext.getHttpRequest().getSession(); //FlexContext.getFlexSession()同理
}
public void setSrvManager(ServiceManager srvManager) {
this.srvManager = srvManager;
}
public UserService getUserService() {
return srvManager.getUserService();
}
}
4. 用户业务逻辑处理代码:
import cn.flex.web.BaseLogicImpl;
public class UserActive extends BaseLogicImpl{
/**
* 用户登陆
* @param name
* @param psw
* @return
*/
public Integer login(String name, String psw) {
Integer result = getUserService().checkLogin(name, psw);
//result整型标识处理接口, 0 为登陆成功, 1为错误, null为用户名不存在.
if(result!=null && result == 0) {
getSession().setAttribute("userName", name);
}
return result;
}
}
5. FLEX主要代码:
private function toLogin():void {
var name:String = ui_name.text;
var psw:String = ui_pass.text;
userSv.login(name, psw);
}
private function loginResult(event:ResultEvent):void {
var data:Object = event.result;
//trace(data);
if(data == 0){
Alert.show("login success.");
showMainFM();
}else if(data == 1){
Alert.show("The password is wrong.");
}else if(data == null ){
Alert.show("The user account doesn't exsit.");
}
}
<mx:RemoteObject id="userSv" destination="userActive"
endpoint="/FlexWeb/messagebroker/amf" >
<mx:method name="login" result="loginResult(event)" />
</mx:RemoteObject>
<mx:Panel id="loginPanel" title="User Login" showEffect="{irisLoginEffect}"
width="300" height="230" creationCompleteEffect=""
layout="absolute" verticalCenter="0" horizontalCenter="0" y="113">
<mx:Canvas borderColor="#ffffff" y="19" x="16.5">
<mx:Label text="UserName:" x="10" y="31"/>
<mx:TextInput id="ui_name" x="87" y="29"/>
<mx:Label text="Password:" x="15" y="70"/>
<mx:TextInput id="ui_pass" x="87" y="68"/>
<mx:Button click="toLogin()" label="确定" x="87" y="101"/>
<mx:Button click="showRegisterFM()" label="注册" x="169" y="101"/>
</mx:Canvas>
</mx:Panel>
发表评论
-
Java中byte与16进制字符串的互相转换
2014-09-07 07:43 715Java中byte用二进制表示占用8位,而我们知道16进制 ... -
SynchronizedMap和ConcurrentHashMap的深入分析
2014-06-19 10:33 591在开始之前,先介绍下Map是什么? javadoc中对M ... -
多线程下使用 SimpleDateFormat 的问题
2014-03-18 12:38 741最近用到多线程写通信服务,发现在解析时间是一直莫名的错误, ... -
Flex 记住密码
2012-09-01 15:08 12311 在密码正确的情况下,如果“记住密码”是选中的,那么将用户名 ... -
FlexClient、MessageClient、FlexSession
2012-08-16 09:17 875服务端FlexClient、MessageClient、Fle ... -
Flex加密算法设计方案
2012-07-31 10:09 1120对于 Web 应用程序,安全登录是很重要的。 ... -
java内存限制
2012-07-12 20:38 888回顾一下java内存限制的几个参数的具体含义 -Xm ... -
Flex 读取 bmp 格式的图片
2012-07-07 14:34 2532现在要求把后台bmp格式的图片,在flash中显 ... -
Flex组件的行为和动画效果
2012-07-05 16:44 851触发器名称 ... -
UTC GMT CST时间
2012-07-05 15:59 2493GMT(Greenwich Mean Time,格林威治 ... -
flex项目中用到了关于时间的计算
2012-07-05 11:11 18891.计算两时间的差值 var date1:Date ; var ... -
使用搜索的关键字过滤DataGrid的行
2012-06-09 14:39 777这里主要展示如何使用搜索的关键字过滤DataGrid的行。其实 ... -
flex的取整(取数)数学运算实例
2012-06-05 20:23 2523<?xml version="1.0&q ... -
自动获得flex中输入框焦点
2012-05-18 08:51 708//在html页面中增加 //swfname--为sw ... -
Flex 滚动条样式设置
2012-04-27 18:00 2554滚动条滚动慢问题:verticalLineScrollSize ... -
Flex组件优化 callLater
2012-04-11 11:29 888Flash & Flex组件优化的杀手锏call ... -
async-threading
2012-04-10 16:09 931开源项目async-threading能使as3支持多线 ... -
Flex异步令牌AsyncToken的用法介绍
2012-04-10 14:03 776什么是AsyncToken?官方文档是这样描述的:&q ... -
Arcgis Symbol
2012-04-07 17:02 7306ArcGIS Engine9.3为开发人员提供了32种符号,主 ... -
ArcGis api for flex 中 Map控件的属性
2012-03-24 17:43 4025<?xml version="1.0&q ...
相关推荐
1 25 跟我StepByStep学FLEX教程------Java&Flex之RemoteObject 1 26 跟我StepByStep学FLEX教程------AMF 1 27 跟我StepByStep学FLEX教程------Demo12之FLEX和Spring整合 1 28 跟我StepByStep学FLEX教程------访问...
flex使用 RemoteObject 与java进行json格式的数据交互
FLEX使用RemoteObject方式和后台童心
介绍flex使用RemoteObject技术
flex中actionscript动态调用remoteobject类,很简单的一个例子,后面可以扩充,动态调用java的方法,可在java方法中放个switch,返回不同的结果集
eclipse3.7 + flash builder 4.5插件 + tomcat6.X调试通过,一个flex remoteobject简单例子(BlazeDS)。实际导入后指定flex server--java settings--blazeds.war的路径
两个项目,flex + java + RemoteObject,实现一个简单的RemoteObject通信案例
flex4 中,用remoteobject 实现多文件上传的例子,有进度展示
Flex 和RemoteObject通讯方式 图文解释!
本教程通过图文介绍和对一些关键性的地方进行解释,让大家了解如何新建Flex的LCDS工程,并利用工具快速整合和部署J2EE项目和LCDS项目,掌握了简单的请求RemoteObject和配置的方法,初步掌握LCDS的应用之一。
Flex访问Oracle数据库------ RemoteObject方法 由于Flex不能直接与Oracle数据库进行通信,所以采用借助Java以RemoteObject方式连接数据库 下为详细配置
使用封装后的RemoteObject和java通信,以blazeds做为第三方软件,上传的是一个Demo实例
NULL 博文链接:https://yjck.iteye.com/blog/765169
flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.这次使用flex4+myeclipse8.5录制了一个视频.以免时间长了遗忘. 软件环境:windows7+flex4+myeclipse8.5+blazeds 功能描述...
使用的原理很简单: Flex-Form <--接受用户输入 || ||使用RemoteObject方式就用户输入的数据封装成json格式传递到后台java bean || Java Bean()--->执行真正的Email发送----->回馈消息---->Flex-...
与整合spring2.5以下的方法有不同了,(看过一些教程觉得不是很好,用起来不顺手) 最终参考了官方的sample,得到了这个不错的整合方法。 把要用blazeds公开给flex的java方法配置在flex-servlet.xml中 把spring整合...
本实例介绍如何使用flex 访问 remoteObject,里面除了实例之外还对项目的配置过程进行了详细的介绍,只要按照步骤去配置你就可以配置好的。
Spring和Flex整合时用的SpringFactory,SpringFactory实例化Spring bean文件,供表现层Flex远程调用(RemoteObject),我做Spring+Hibernate+Flex做J2EE开发时用到的。下载就可以直接用了,省得手工写。希望对大家有...
一个用Flex调用JAVA方法的例子ffffffff