【问题标题】:How to override Silvelright 4 RIA Service AuthenticationService User.IsInRole如何覆盖 Silverright 4 RIA Service AuthenticationService User.IsInRole
【发布时间】:2011-04-04 18:53:26
【问题描述】:

我开始使用 Silverlight 4 导航应用程序模板(启用 RIA 服务)。 (因为我真的不喜欢臃肿的业务应用程序模板) 我添加了身份验证服务,并且能够对用户进行身份验证, 但想覆盖 User.IsInRole 方法。

WebContext.Current.User.IsInRole("Guest");

但我找不到任何地方可以覆盖该行为。

【问题讨论】:

    标签: silverlight authentication wcf-ria-services


    【解决方案1】:

    你想做什么? User.IsInRole 是 IPrincipal.IsInRole 的实现,确实不应该被覆盖。

    如果您想设置用户角色,您可以在 AuthenticationService 中的服务器上通过覆盖 GetAuthenticatedUser 或 GetAnonymousUser 方法来完成。

    如果您想要一个类似于 IsInRole 的方法,您可以在客户端使用部分类扩展 User 类型并添加任何有意义的方法。

    【讨论】:

    • 好吧,我有一个空的身份验证服务,并且在我的应用程序中我希望能够调用 WebContext.User.IsInRole("somerole") 这将导致在我们的数据库中查找以查看是否该用户实际上是该角色。我们有一个表'User'和一个表'Role',然后有一个链接表'UserInRole'来创建一个MM关系。
    • 当有人调用 IsInRole(Silverlight 强制异步通信)时,您将无法进行查找。不过,您可以在 GetAuthenticatedUser 中更早地进行查找。或者,您应该能够使用标准 RIA 服务关联将用户的角色传递给客户端。这可能很有用,但在大多数情况下,最好将该表提取为服务器上的字符串列表。
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多