在登录页面中,我通过以下代码确定用户是否是管理员:
if (r.IsUserInRole(txtUserUsername.Text, "User") == true)
{
connection = ConfigurationManager.ConnectionStrings["GameHutDBEntities1"].ToString();
switch (new BusinessLayer.Users().ValidateLogin(txtUserUsername.Text, txtUserPassword.Text, connection))
{
case Helpers.LoginStatus.LoginSuccessful:
{
Response.Write("<Script> alert('Welcome to GameHut Admin Panel!')</Script>");
FormsAuthentication.RedirectFromLoginPage(txtUserUsername.Text, chkRemember.Checked);
break;
}
case Helpers.LoginStatus.Blocked:
{
Response.Write("<Script> alert('Account Blocked')</Script>");
break;
}
case Helpers.LoginStatus.Invalid:
{
Response.Write("<Script> alert('Invalid username or password')</Script>");
break;
}
}
}
在连接类中,我按如下方式传递连接字符串:
public class ConnectionClass
{
public GameHutDBEntities Entities { get; set; }
public System.Data.IDbTransaction Transaction { get; set; }
public ConnectionClass()
{
this.Entities = new GameHutDBEntities();
}
public ConnectionClass(GameHutDBEntities _Entities)
{
this.Entities = _Entities;
}
public ConnectionClass(GameHutDBEntities _Entities, string conn)
{
this.Entities = _Entities;
this.Entities.Connection.ConnectionString = conn;
}
}
记录管理员并重定向到另一个页面后,连接字符串将丢失并设置默认连接字符串?只要用户注销,有人可以告诉我如何保留连接字符串。
答案 0 :(得分:2)
那是因为你在后面的web表单代码中实例化了类,当你因为ASP.NET无状态而切换到另一个页面时,实例化的对象就会丢失。
如果需要重用连接字符串,请将其保存在会话变量中:
Session["conn"] = "connection string";
您可以在任何地方重复使用它。
还有其他一些选项,例如Cache或静态属性,甚至每次要使用它时都会从Configuration中读取它。这实际上取决于使用环境。
修改强>
要从配置中读取连接字符串,您可以使用ConfigurationManager
中的System.Configuration
类:
string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
答案 1 :(得分:0)
将连接字符串名称保留在数据访问层中,并在每次需要时从Web.config中读取它(或在本地缓存它)。