C# 阻止已登录用户的登录
您好,所以我想检查数据库上的用户是否已经登录,然后如果他登录停止登录在这里是我的代码样本thx的帮助C# 阻止已登录用户的登录,c#,asp.net,session,authentication,C#,Asp.net,Session,Authentication,您好,所以我想检查数据库上的用户是否已经登录,然后如果他登录停止登录在这里是我的代码样本thx的帮助 protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e) { String name = ((Login)LoginView1.FindControl("Login1")).UserName; SqlConnection source_db = new SqlConnect
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
String name = ((Login)LoginView1.FindControl("Login1")).UserName;
SqlConnection source_db = new SqlConnection();
source_db.ConnectionString = ConfigurationManager.ConnectionStrings["source"].ConnectionString;//konfiguracja polaczenia z web.cfg
SqlCommand sql_polecenie3 = new SqlCommand("select Status from aspnet_Users where UserName='" + name + "';", source_db);
try
{
source_db.Open();//otwiera polaczenie
if ((int)sql_polecenie3.ExecuteScalar() == 1)
{
Label1.Visible = true;
}
else
{
Label1.Visible = false;
}
source_db.Close();//zamyka polaczenie
}
catch (Exception)
{
source_db.Close();//zamyka polaczenie
}
}
答案是添加e.Cancel=true或false取决于我们何时取消登录。Alex,我永远不会使用你的代码。。。你做错了几件事,最重要的是,任何人都可以从你刚刚展示的内容中删除你的整个数据库 第一件事优先
- 您应该始终在不同的项目(通常是库项目-DLL)中拥有数据库访问权限(数据库代码)
- 您应该始终处理您的对象,在您的情况下,您可以安全地在
和SqlConnection
中使用SqlCommand
关键字using
- 您应该始终使用sql变量,并且永远不要直接从附加代码创建sql查询,除非您确定您是这样做的
关于您的答案如果您添加
e.Cancel=true代码>这将告诉操作您已自定义响应,并且您不希望对象继续自动响应。登录控件为此提供事件。
如果要执行一些自定义检查并在此基础上拒绝登录,则应使用authenticate事件
<asp:Login id="Login1" runat="server"
OnAuthenticate="OnAuthenticate">
</asp:Login>
private void OnAuthenticate(object sender, AuthenticateEventArgs e)
{
bool Authenticated = false;
Authenticated = SiteSpecificAuthenticationMethod(Login1.UserName, Login1.Password);
e.Authenticated = Authenticated;
}
身份验证上的私有无效(对象发送方、AuthenticateEventArgs e)
{
bool=false;
Authenticated=SiteSpecificAuthenticationMethod(Login1.UserName,Login1.Password);
e、 已认证=已认证;
}
您只想检查数据库中是否存在该用户(根据数据库验证用户凭据)?可能重复:没有,工作正常,只需中断登录控件的登录。@Alex-您的问题不清楚。你应该已经在使用一个控件,该控件根据用户配置文件状态隐藏/显示内容。我相信他想要我也想要的东西。这是一种获取用户名或id并检查此人是否已登录另一台计算机的方法。同时防止他们同时登录。这始终是一个很好的做法,你可以学到一些新东西,而且你可以从同事中脱颖而出;)