通过PageMethods的C#身份验证表单

时间:2015-03-11 13:05:37

标签: ajax

我对这些教程有疑问: https://msdn.microsoft.com/en-us/library/xdt4thhy%28v=vs.140%29.aspx

我已经使用这些提示创建了自己的网站,因此在我的HTML文件中,我当然会在表单中插入:

  <asp:ScriptManager ID="ScriptManager1" runat="server"  EnablePageMethods="true"></asp:ScriptManager>

我创建了一个Logon.aspx页面以便放入登录表单,然后单击按钮调用javascript函数login():

    <script type="text/javascript">
        function login() {
            var user     = $('#username').val();
            var password = $('#password').val();
            PageMethods.login_GO(user, password, ok, ko);
            function ok(result) {
                alert(result);
            }
            function ko(result) {
                alert('Cannot process your request at the moment, please try later.');
            }
        }
    </script>

然后javascript函数调用后面的代码方法(在Logon.aspx.cs文件中)

[WebMethod]
public string login_GO(string user, string password)
{
    if (user == "cool" && password == "whau")
    {
        FormsAuthentication.RedirectFromLoginPage(user, true);
        return "done";
    }
    else
    {
        return "KO";
    }
}

我唯一的答案是来自浏览器的警告消息框:

目前无法处理您的请求,请稍后再试。

为什么你认为这种方法不起作用?

我的意思是通常我不需要别的东西吗?

提前致谢!

编辑:

在开始调试代码之前,我决定在Web.config配置中禁用身份验证功能(我只对以下所有这些行发表评论):

<authentication mode="Forms">
<forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH"  defaultUrl="PlazaMonitor.aspx" >
</forms>
</authentication>    
<authorization>
<deny users="?" />
</authorization>--> 

现在,我可以在后面的代码(Logon.aspx.cs)上调用login_GO方法。

一切正常,但不是认证(因为我禁用了它)

所有这一切的目标是使用后台代码方法对用户进行身份验证,因此如果我需要在使用身份验证方法之前进行身份验证,那么我将会疯狂^^!

编辑:

我只是理解,在你是AUTHENTICATE之前,每个ressource都应该被禁用,所以即使是过去认证的WebMethod也被禁用了!

你知道我们可以改变/允许我们需要的好资源吗(在Web.config中)吗?

提前感谢您的帮助;)!

0 个答案:

没有答案