【问题标题】:Forms Authentication redirects in WCFWCF 中的表单身份验证重定向
【发布时间】:2013-04-08 17:55:53
【问题描述】:

在 asp.net 中使用表单身份验证时,如何在访问 WCF 服务时停止 302 重定向到网页?

当客户端访问需要身份验证的 aspx 页面时,这是所需的行为,但 WCF 服务不应在身份验证失败时重定向到 HTML 页面。

有什么想法吗?

汤姆。

【问题讨论】:

  • 当他们访问 WCF 服务并且他们没有经过身份验证时,您希望发生什么?这是在他们应该已经过身份验证的页面上从 Javascript 调用的 REST 服务吗?
  • 我想向他们发送 JSON 格式的错误。它将用于响应 AJAX 请求。如果在用户查看页面时身份验证超时,则 AJAX 请求将重定向到登录。

标签: wcf forms forms-authentication


【解决方案1】:

试试这个。

在您的登录服务中添加一个方法作为 LogOn 并在用户未授权时返回您想要的任何内容。

public String LogOn()
    {
        return "Unauthorized";
    }

然后按如下方式更新网络配置

<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
  <forms loginUrl="/LoginService.svc/LogOn"  />
</authentication>
<authorization>
  <deny users="?"/>
</authorization>

【讨论】:

    【解决方案2】:

    这是表单身份验证的预期行为。

    通常不会对 WCF 服务使用表单身份验证,因为 WCF 客户端无法响应登录表单。

    解决此问题的最佳方法是更改​​ WCF 服务上的身份验证方法

    编辑

    根据您的 cmets,它可能是以下两种情况之一:

    • 在用户登录之前发送 AJAX 请求
    • 身份验证 cookie 未与 AJAX 请求一起发送

    【讨论】:

    • 感谢您的回复。因此,当使用 WCF 响应来自同一个 .net 站点内的 AJAX 请求时,它不应该使用相同的身份验证吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多