[转]FluorineFx:认证与授权

Flash/Flex在通过FluorineFx调用.Net中的方法时,同样也会遇到认证与授权问题,即:

 “是否随便一个阿猫阿狗都能来调用我的方法?”或者可以理解为:“调用我的方法前是否需要登录?” 这就是认证

“门卫放进来后,是不是不管什么身份的人,都能来拿东西?”或者可以理解为:“登录后的用户,具备何种资格的人才能调用方法?” 这就是授权

 

步骤:

1、先创建自己的LoginCommand类(相当于门卫,用于把关):DemoLoginCommand

2、再创建一个不需要认证就能随便调用的远程服务 DemoLoginService

3、为了对比,再来创建一个需要认证的远程服务:DemoSecureService

等一下,提个问题:比较这个服务跟刚才创建的服务,除了里面的方法名称(及相关的方法处理逻辑)不同,本质上没区别吧? 凭啥说调用这个服务就需要认证,而刚才那个服务就能随便调用?

很好,希望大家带着这个问题继续,后面会揭晓。

先打个岔:回想一下asp.net中后台目录权限的处理,我们可以在web.config 中通过配置来决定某个目录是否可访问

?
1
2
3
4
5
6
7
8
9
< location path = "admin" >
     < system.web >
         < authorization >
             < deny users = "?" />
             < deny roles = "买家" />
             < deny roles = "卖家" />
         </ authorization >
     </ system.web >
</ location >

这段配置的意思就是 /admin目录,匿名用户无法访问(即要求登录),同时"买家","卖家"二种角色被拒绝了(即:就算你登录了,只要你是"买家"或"卖家"角色,同样也访问不了)

FluorineFx中,同样也是用配置来实现权限访问的:

先看remoting-config.xml的配置

关键地方已经注释了,这个配置就表明了_04_Authentication.DemoLoginService不需要登录就能调用,而其它服务调用时要受到"privileged-users"的限制,那么这个限制到底如何描述的呢?

services-config.xml配置

同样:重点地方已经加了注释。

另外一个重要配置:fluorineFx说到底是宿主在asp.net iis环境中的,所以它的认证票据同样是保存在cookie中的,web.config的表单认证方式要设置为Forms,即

ok,服务端就全部完成了,再来看Flash端的调用:

UI界面:

 

先讲下我们要做什么:

a、点击“登录”或“注销”时,调用不需要登录的DemoLoginService

b、点击"远程调用"时,调用需要认证的DemoSecureService

预测一下结果:

点击“登录”前,如果直接点击“远程调用”,应该会调用失败(因此此时尚未登录认证)

如果先点击“登录”后,再点击“远程调用”,因为这时已经登录认证过了,所以应该成功

完整flash代码:

测试运行的截图:

这是一上来就直接点击"远程调用"的结果,注意右侧的大文本框:Requested access is not allowed 即访问不允许,说明这个服务是需要认证才能调用的。

如果点击“登录”后,再点击"远程调用",这回成功了,说明认证起作用了。

 

最后再啰嗦一下:前面提到了FluorineFx的认证票据跟asp.net一样,是保存在Cookie的,所以如果您把swf嵌入到网页上,在flash中点击登录后,如果在其它aspx页面上用

同样也能检测出用户的登录状态!(前提是不要关闭刚才那个嵌入swf的页面)

 

唯一遗憾的是:FluorineFx生成的Cookie认证票据中,并未包含Roles角色信息,所以在AspX页面上无法用IsInRole来判断当前用户的角色(我跟踪了一下,fluorineFx在Cookie中仅保存了用户名、密码以及一些唯一性标识,官方提供的认证演示中虽然有用IsInRole来判断,但其实是没用的)。

 

当然这个问题,您可以修改FluorineFx的源码来解决,这点工作就留给大家了。 

 

不过令人高兴的是,反过来却可以!即:如果在asp.net上登录了,认证和授权信息在flash里能识别,通常情况下,这已经能满足绝大多数需要了。示例源代码下载: http://cid-2959920b8267aaca.office.live.com/self.aspx/Flash/FluorineFx^_Demo^_04.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值