在Authentication Service中实现自定义返回值

时间:2014-02-01 14:37:45

标签: c# silverlight-5.0 wcf-ria-services

有一个身份验证服务必须通知客户端用户名和密码无效的原因。例如,其密码可能已过期。但是,身份验证服务中的 Login 方法应为匿名用户返回有效的 IPrinciple 或null。这意味着以下代码不起作用:

    public UserAuthBase Login(string userName, string password, bool isPersistent, string customData)
    {

        var result = repository.Login(userName, password);

        if (result != null && !result.PasswordExpired)
        {
            FormsAuthentication.SetAuthCookie(result.Name, true);
            // Some Code
        }
        else if (result != null)
        {
            return new UserAuthBase { Name = string.Empty, PasswordExpired = true };
        }

        return result;
    }

此代码将使用以下消息抛出 InvalidOperationException

  

登录成功完成后,用户必须经过身份验证

如何更改此方法以支持客户端的任何消息?!

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以将try / catch放在Login方法中以捕获InvalidOperationException。然后,您可以通过选择向用户显示任何消息。