在Web应用中,我们经常会限制某些特定用户使用一些功能,并对每个用户保持性能。ASP.NET提供了身份验证、角色、个性化实现这些功能。身份验证允许我们核实用户的凭证并标记用户为已登录。角色允许我们根据职责来把用户分组,并对组中成员授予资源许可。个性化允许我们保持验证用户的属相并在web应用中检索这些属性。
WCF RIA Services框架在表现层和中间层都提供这些功能。这节就介绍RIA Services中的身份验证、角色、和个性化。
身份验证域服务
RIA Services提供身份验证域服务模板来简化在表示层中使用身份验证、角色和个性化。我们把验证域服务添加到服务端项目中。
当我们添加一个身份验证域服务时,RIA Services框架自动在服务端添加两个类。代表身份验证服务的类派生于AuthenticationBase(T)类。代表用户的类派生于UserBase类。用户类为已经验证的用户包含个性化属性。
通过客户端代码,我们调用身份验证域服务来请求我们需要的验证、角色或个性化信息。
WebContext
当我们添加一个身份验证域服务时,RIA Services自动在客户端生成一个WebContext类。这个类派生于WebContextBase类,并允许我们在客户端访问身份验证域服务和用户。用Current属性来获取WebContext的当前实例。
身份验证
要想在RIA Services解决方案中使用身份验证,我们必须在服务端和客户端来配置验证。
通过在客户端使用WebContext,我们可以从Silverlight应用程序同步登陆用户。当我们实施了身份验证时,我们通常会用到下面的方法和属性。
Authentication属性(WebContext.Current.Authentication): 提供对身份验证服务的访问。
User属性(WebContext.Current.User): 提供对包含用户状态的对象的访问。
Login(String,String)方法(WebContext.Current.Authentication.Login(String,String):同步验证用户凭证。
Logout(Boolean)方法(WebContext.Current.Authentication.Logout(boolean):同步登出一个已验证用户。
角色
在我们实施了身份验证后,我们就可以配置我们的解决方案来使用角色功能。当我们实施角色功能时,通常会用到下面的属性和方法。
WebContext.Current.User.Roles : 提供用户被赋予的角色的集合。
WebContext.Current.User.IsInRole(String) : 判断已验证用户是否是指定角色的成员。
个性化
要想使用个性化功能,我们必须为个性化功能配置我们的解决方案。当我们实施了个性化功能时,通常会用到下面的属性和方法。
WebContext.Current.User : 包含所有我们已经添加到User类中的属性。例如,User.PhoneNumber。
LoadUser()方法(WebContext.Current.Authentication.LoadUser()) : 刷新用户状态。
SaveUser(Boolean)方法(WebContext.Current.Authentication.SaveUser(boolean)) : 把所有的更改保存到用户状态中。
在客户端处理身份验证错误
我们可以处理在登录、登出、装载或保存用户时产生的错误。思路是通过在调用这些方法时提供回调参数。在回调方法中,我们添加处理错误的代码,并调用MarkErrorAsHandled方法来指定framwork不要抛出异常。AuthenticationService类允许我们在调用下面的方法时提供回调参数。
-- LoadUser
-- Login
-- Logout
-- SaveUser
限制对域服务的访问
在我们实施了身份验证和角色功能后,我们就可以限制特定用户对域服务的访问。可以对整个域服务或服务中个别的操作应用下面的属性。如果我们对整个服务使用了属性,它会应用到所有的操作。
- RequiresAuthenticationAttribute : 指定只有具有验证凭证的用户可以访问操作。
- RequiresRoleAttribute : 指定只有属于特定角色的验证用户可以访问操作。
我们也可以创建自己的验证属性,更多相关信息可以看后面的章节。
详细解决方案
Silverlight WCF RIA服务(三十)身份验证、角色、个性化 1
热度:95 发布时间:2024-01-11 14:08:48.0
相关解决方案
- silverlight ListBox 有关问题
- vc++和wpf/silverlight,该如何处理
- vc++跟wpf/silverlight
- silverlight xp 一部分机器白屏
- Silverlight——xaml——Image,该怎么解决
- silverlight 下传URI有关问题
- silverlight 虚拟化 treeview解决办法
- “asp.net”跟“Silverlight”结合使用
- 请问 VS 2010 ultimate 默认安装,没有 Silverlight 开发环境
- silverlight socket 怎么支持 ansi 和 gb2312编码
- silverlight tools beta 2 for vs 2008 安装有关问题
- 身份验证 Identity 有关问题。多谢
- 身份验证 session 与cookie 孰优孰劣,该如何解决
- 什么是HTML5?什么是WPF/Silverlight?解决办法
- silverlight foreach循环的用法,该怎么解决
- WP8 安装 Silverlight for Windows Phone Toolkit 后,没法用,该如何解决
- WP8 装配 Silverlight for Windows Phone Toolkit 后,没法用
- 向在大家伙儿介绍一个 silverlight for windows embedded QQ 群
- silverlight 怎么打开 word文档
- Silverlight ComBox 怎么改变第一行的字体颜色
- SIlverlight DataGrid BeginEdit这个如何用?求大神
- silverlight ria 更新域服务种太麻烦
- Silverlight DataGrid 自定义编辑列,打开之后怎么填充整个单元格
- Silverlight DevExpress 柱状图点击要怎么做
- 在线急求好手赐教.Silverlight MediaElement 本地视频文件播放不了?
- Silverlight 的自定义控件转化成UserControl,该如何处理
- SilverLight-ToolTipService,该怎么解决
- silverlight+Oracle有关问题,请赐教
- silverlight datagrid 有关问题
- Silverlight 卡通效果2