在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 有关问题
- Silverlight——xaml——Image,该怎么解决
- “asp.net”跟“Silverlight”结合使用
- 请问 VS 2010 ultimate 默认安装,没有 Silverlight 开发环境
- silverlight socket 怎么支持 ansi 和 gb2312编码
- 身份验证 Identity 有关问题。多谢
- 什么是HTML5?什么是WPF/Silverlight?解决办法
- silverlight foreach循环的用法,该怎么解决
- WP8 安装 Silverlight for Windows Phone Toolkit 后,没法用,该如何解决
- WP8 装配 Silverlight for Windows Phone Toolkit 后,没法用
- 向在大家伙儿介绍一个 silverlight for windows embedded QQ 群
- Silverlight ComBox 怎么改变第一行的字体颜色
- SIlverlight DataGrid BeginEdit这个如何用?求大神
- silverlight ria 更新域服务种太麻烦
- Silverlight DataGrid 自定义编辑列,打开之后怎么填充整个单元格
- SilverLight-ToolTipService,该怎么解决
- silverlight+Oracle有关问题,请赐教
- silverlight datagrid 有关问题
- Silverlight 卡通效果2
- Silverlight 动画效果1 - 旋转
- silverlight,刷新用户控件中的DataGrid.该怎么解决
- Silverlight chart x轴样式,该怎么处理
- Silverlight,查寻TreeView中某个TreeViewItem
- silverlight 有没有ToolStripDropDown控件的啊第三方也行解决办法
- silverlight 安装?解决思路
- 关于 silverlight 获取 wcf 错误的有关问题
- silverlight,刷新用户控件中的DataGrid.解决办法
- Silverlight runtime 1.0,该如何解决
- Devexpress Silverlight 样式,该怎么解决
- Silverlight + WCF施用Linq to SQL以及ADO.NET Entity Data Model更新数据库子表方法