2012-06-04 52 views
0

这是我的ASP.NET身份验证操作。ASP.NET模拟设计

private void LoginButton_Click(Object sender, 
         EventArgs e) 
    { 
     string userName = txtUserName.Value; 
     string password = txtUserPass.Value; 

     if (ValidateUser(txtUserName.Value, txtUserPass.Value)) 
     { 
      FormsAuthenticationTicket tkt; 
      string cookiestr; 
      HttpCookie ck; 
      tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
               DateTime.Now.AddMinutes(3), chkPersistCookie.Checked, 
               userName + "@ticket"); 
      cookiestr = FormsAuthentication.Encrypt(tkt); 
      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 
      if (chkPersistCookie.Checked) 
       ck.Expires = tkt.Expiration; 
      ck.Path = FormsAuthentication.FormsCookiePath; 
      Response.Cookies.Add(ck); 

      string strRedirect; 
      strRedirect = Request["ReturnUrl"]; 
      if (strRedirect == null) 
       strRedirect = "MyAccount.aspx"; 
      Response.Redirect(strRedirect, true); 
     } 
     else 
      Response.Redirect("logon.aspx", true); 

    } 

我有我的数据库用户表中保存所有凭据。使用ValidateUser方法我正在进行凭据验证。另外我有三种类型的用户:会员,主持人和管理员。每种类型的成员都有独特的功能。可以说我有A,B和C T-SQL存储在我的数据库里面。

我应该以让为:

会员只执行一个查询。

主持人执行A和B.

管理员执行A,B和C

当然,我可以管理的Web应用程序的执行,但我不知道它是多么安全。从技术上讲,我可以在应用程序之外执行类似的查询,从而可以访问所有数据库数据。我想以某种方式将Web App登录和Db访问结合起来。

谢谢!

回答

1

如果这些查询将来自Web应用程序,我认为您会想要管理调用过程的代码端..您可以维护数据库中的URL列表,分配角色并赋予这些角色访问特定的网址。这些网址将决定哪些查询用户可以执行...

然后在你的代码,你可以自定义的属性分配,以限制对它们的访问....

+0

谢谢您的回答。我可以从Web应用程序管理它们,但我不确定它有多安全。从技术上讲,我可以在应用程序之外执行类似的查询,从而访问所有数据。我想以某种方式将Web App登录和Db访问结合起来。 –

+0

通常,您有一个与数据库进行交互的Web应用程序,并且使用一个通常为高级用户的用户,能够执行Web应用程序需要执行的所有必需查询,而不管Web用户上下文如何。然后,Web应用程序管理一个身份验证提供程序,该身份验证提供程序将根据业务需求限制用户对数据库的执行查询... – M4V3R1CK

+0

我知道一种常用于基于Intranet的站点的技术,即使用集成安全性。这是用户使用Windows登录凭据登录网站的地方。然后,任何命中数据库的查询都将显示为特定的窗口标识,并且安全性和权限将持续存在。 – M4V3R1CK

1
+0

这是Windows Impersonation,我不在公司域名下,加上我在Unix下的很多用户。所以我想不会为我工作。 –

+0

对不起,我无法为你提供更多帮助。我认为应用程序级别的用户管理是您最好的选择。我认为创建应用程序的用户不应该是管理员用户以外的任何人(如果他们可以的话,我会重新评估在创建应用程序时可以发出的命令类型),所以我认为你不会曾经有过一个'坏用户'会创建和执行恶意代码的问题。 – M4V3R1CK