如何在ASP.Net Web窗体中授权用户?

时间:2015-03-21 09:36:18

标签: c# asp.net authentication webforms

我有一个Web应用程序,在它的登录中,我检查用户是否存在于系统中,然后如果用户有效,则将他的使用对象添加到session,如下所示:

[WebMethod]
public static object doLogin(string UserName, string PassWord)
{
    try
    {
        entity = new DB();

        UserName = UserName.RemoveInjection();
        PassWord = PassWord.RemoveInjection().Encrypt();

        Manager manager = (from m in entity.Managers
                           where m.UserName.Equals(UserName)
                           && m.PassWord.Equals(PassWord)
                           select m).FirstOrDefault();

        if (manager == null)
            return new { Result = false };
        else
        {
            HttpContext.Current.Session.Add("Manager", manager);
            return new { Result = true };
        }
    }
    catch (Exception ex)
    {
        return new { Result = "failed", Message = ex.Message };
    }
}

然后,在所有网页的page_load和所有methods中,我按照您的说明检查会话:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["Manager"] == null)
    {
        string close = @"<script type='text/javascript'>
                        window.returnValue = true;
                        parent.info('Invalid user.');
                        setTimeout(function () {
                            parent.window.location.href = 'AdminLogin.aspx';

                        }, 4000);
                        </script>";
        base.Response.Write(close);
    }
}

[WebMethod]
public static object List(int start, int size, string orderBy, string orderByType)
{
    if (HttpContext.Current.Session["Manager"] != null)
        // do something
    else
        return new { Result = "session" };
}

我的意思是有一种方法可以阻止所有页面的检查,例如过滤访问特定表单和页面。

1 个答案:

答案 0 :(得分:0)

可能会根据角色和/或匿名(登录)在web.config中设置特殊授权。如果有帮助,您可以为不同的目录创建不同的web.config。

<system.web>
    <authorization>
        <!-- here. -->