我是使用C#进行Web编程的新手,并为移动应用程序开发WCF RESTful服务。
在REST服务类中,我将响应代码设置为HTTP 401 Unauthorized,但它会突然重定向其他页面。
这是我的服务代码:
[WebGet]
public string login(string id, string password)
{
if (Membership.ValidateUser(id, password))
{
FormsAuthentication.SetAuthCookie(id, false);
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
return "Login Succeeded";
}
else
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
return "Login Failed";
}
}
如果登录成功,它可以正常工作,但如果我输入错误的密码,此页面会重定向到
http://localhost:50195/login.aspx?ReturnUrl=%2fuser%2flogin%3fid%3dtest74323%26password%3d535201&id=test74323&password=####
我认为自动重定向到用户登录页面配置,我该如何关闭该配置?当我在服务中使用表单身份验证时,我认为问题很复杂。
我正在使用带有登录cookie的表单身份验证,我知道这不是RESTful方式,但由于与其他服务的集成,我无法帮助它。 (公司内部事务,......)
如果有一些不错但更好的方法来实施登录服务,请告诉我。
当我使用网络浏览器访问服务时,如何显示更好的错误消息?如果登录成功,我知道没有什么可以返回的,我想如果客户端使用Web浏览器访问,我会更好地显示字符串值。
答案 0 :(得分:1)
我在下面的链接中找到了答案:
Forms authentication: disable redirect to the login page
有很多方法可以探测这种情况,肮脏而快速排序......
EndRequest
HttpModule
并再次将重定向302代码更改为未经身份验证的401。 FormsAuthenticationModule
,并重新实施您自己的Application_AuthenticateRequest
我选择2.我认为1.太脏了,3.太慢了,工作太大了。
答案 1 :(得分:0)
您可以在身份验证部分更改默认登录网址,如下所示:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
希望有所帮助:)