extract from the active directory

jiayun1 2010-04-07 04:48:18
哎 题目不知道怎么描述。

内部员工登陆电脑操作,要提取出员工的姓名和电话。
数据库有一张表。有这两个字段。


session?要怎么写代码呢?
...全文
163 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2010-04-08
  • 打赏
  • 举报
回复
private void btlogin_Click(object sender, System.EventArgs e)
{ string UserID = userid.Text;
string Pwd = pwd.Text;
string mySql = "select Count(*) from Manager where UserName='"+UserID+"' and Pwd ='"+Pwd+"'";
SqlConnection connection = null ;
try
{
try
{
connection = SqlHelper.GetConnection();
}
catch
{
MessageBox.Show("The connection with the database can't be established", "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

Int32 count = (Int32)SqlHelper.ExecuteScalar(connection,CommandType.Text,mySql);
if (count > 0)
{
DialogResult = DialogResult.OK;

//把登陆帐号写入Users.xml文件
DataSet ds = new DataSet();
string filename = "Users.xml";
ds.ReadXmlSchema(filename);
DataRow dr = ds.Tables[0].NewRow();
dr[0] = userid.Text;
ds.Tables[0].Rows.Add(dr);
ds.WriteXml(filename);
}
else
{
DialogResult = DialogResult.None;
MessageBox.Show("登陆帐号或密码错误,请重新输入!","登陆错误",MessageBoxButtons.OK,MessageBoxIcon.Error);

}
}
catch(Exception ex)
{
string errMessage = "";
for( Exception tempException = ex; tempException != null ; tempException = tempException.InnerException )
{
errMessage += tempException.Message + Environment.NewLine + Environment.NewLine;
}

MessageBox.Show( string.Format( "There are some problems while trying to use the Data Access Application block, please check the following error messages: {0}"
+ Environment.NewLine + "This test requires some modifications to the Northwind database. Please make sure the database has been initialized using the SetUpDataBase.bat database script, or from the Install Quickstart option on the Start menu.", errMessage ),
"Application error", MessageBoxButtons.OK, MessageBoxIcon.Error );
}
finally
{

if(connection != null)
connection.Dispose();
}



}

private void btcancel_Click(object sender, System.EventArgs e)
{
Application.Exit();
}

private void pwd_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyValue == (char)13)
{
btlogin.Focus();

}
}

private void Flogin_Load(object sender, System.EventArgs e)
{
//从Users.xml文件读出登陆帐号
DataSet ds = new DataSet();
FileStream fs = new FileStream("Users.xml",FileMode.Open,FileAccess.Read);
StreamReader reader = new StreamReader(fs);
ds.ReadXml(reader);
fs.Close();
DataRow dr = ds.Tables[0].Rows[0];
userid.Text = dr[0].ToString();

}
}
Liang_ZhiQiang 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jiayun1 的回复:]
引用 9 楼 jiayun1 的回复:
引用 8 楼 liang_zhiqiang 的回复:
用户登录时,提交用户名和密码到数据核对,然后顺路查出部分要用的东西存到session中,然后可以再不同的页面提取自己要信息。

这么复杂?
用户都是我们自己的员工。
别人登不到这个页面。

主要是不知道怎么判断谁是谁。没有登陆页面。还就那一个页面。
[/Quote]


x额,这个用户登录验证的功能是最简单了的。
你要记录谁操作了,就必须给个规则。
肖无疾 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiayun1 的回复:]
引用 1 楼 hjw01592 的回复:
这个。。。很难吗?还是我想的太简单了?

简单的就简单的说。
在页面上显示,不是sql, sql查询我会写。
首先要判断是谁登录的。
比如kavin登陆 ,
要系统里他的电话908-371
我在某一个事件里要用这两个字段。
taker:
phone:
[/Quote]
取消匿名,使用windows验证
Request.LogonUserIdentity.Name
criedshy 2010-04-08
  • 打赏
  • 举报
回复
这个事要慢慢理顺思路,代码就不分层,直接写在一起了

1.从数据库获取数据 这是SQL
select userId,userName,userTel from T_UserInfo where userId=@userId

这里可以写成一个方法
private void GetLoginUserInfo(string loginUserId)
{
try
{
Using(SqlConnection conn=new SqlConnection("server=your server ip;database=your db;user=your sql server login user name;pwd=your pwd;"))
{
string strSQL="select userId,userName,userTel from T_UserInfo where userId='"+loginUserId+"'";
SqlCommand cmd=new SqlCommand(strSQL,conn);
conn.Open();
SqlDataReader dr =cmd.ExecuteReader();
int i=0;
while(dr.Read())
{
if(i>0) throw new Exception("more than one user");
Session["UserId"]=dr[0].ToString();
Session["UserName"]=dr[1].ToString();
Session["UserTel"]=dr[2].ToString();
i++;
}
dr.Close();
}
}
catch(Exception ex){ throw ex;}

}


2.将登录者的name ,telphone 显示在page上,这里可以用label显示,命名为lblUserName,lblTelNo,同时将信息保存在Session里,这里用一个按钮表示登录

protected void btnLogin_Click(object sender, EventArgs e)
{
GetLoginUserInfo();
//将用户信息显示在页面上
if(Session["UserName"]!=null) this.lblUserName.Text=Session["UserName"].ToString();
if(Session["UserTel"]!=null) thie.lblTelNo.Text=Session["UserTel"].ToString();
//TODO:add your other operations
}

3.Session是针对当前用户的,在没过期内不存在要判断哪个用户登录的,因为session里已经保存了当前的用户的电话;其他事件(可以是别个页面)调用Session的值,调用前先判断一下是否为空


if(Session["UserName"]!=null) 
{
//TODO:your code
}
if(Session["UserTel"]!=null)
{
//TODO:your code
}



PS:代码没有验证,有错误自行更改!
肖无疾 2010-04-08
  • 打赏
  • 举报
回复
姐姐是要从AD中获取信息吗?
用 DirectorySearcher 吧,大概是这样的
filter="(&(sAMAccountName=取访问者帐号)(objectClass=person)(objectCategory=person))"
properties=new string[] { "sAMAccountName", "name", "description" }//要找的字段
yan11cn 2010-04-08
  • 打赏
  • 举报
回复
session("Ft_UserName")=Ft_UserName
直观一点:

<%
Sub login()
Ft_UserName=request.Form("Ft_UserName")
Ft_PassWord=request.Form("Ft_PassWord")
'Ft_Code=request.Form("Ft_Code")
if Ft_UserName<>"" then
Call db_conn()
Call dbRs(0,"select * from Ft_User where Ft_UserName='"&Ft_UserName&"' and Ft_PassWord='" & MD5(Ft_PassWord) & "'" )
if rs.eof then
Call Salert("用户名密码错误!","../index.asp")
else
'if Ft_Code<>Session("pSN") then
' Call Salert("请输入正确的验证码!","login.asp")
'else
session("Ft_UserName")=Ft_UserName '登录成功之后写session
response.Redirect "index.asp"
response.end
'end if
end if
end if
End Sub
%>
yan11cn 2010-04-08
  • 打赏
  • 举报
回复
然后每个需要判断是否登录的页面我都包含了
login_user.asp这个文件:
<%
if session("Ft_UserName")="" then
response.Write "<script>alert('请登录');window.location.href='../index.asp';</script>"
end if
%>
yan11cn 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jiayun1 的回复:]
主要是不知道怎么判断谁是谁。没有登陆页面。还就那一个页面。
[/Quote]
姐姐 这个不难 我用asp来描述下
一般登录的时候,判断用户名密码,正确的话 就写session或者cookies
这样在其他页面判断是谁登录的时候,就直接调用session或者cookies就OK了
下面是我的一个asp实例:

Sub login()
Ft_UserName=request.Form("Ft_UserName")
Ft_PassWord=request.Form("Ft_PassWord")
'Ft_Code=request.Form("Ft_Code")
if Ft_UserName<>"" then
Call db_conn()
Call dbRs(0,"select * from Ft_User where Ft_UserName='"&Ft_UserName&"' and Ft_PassWord='" & MD5(Ft_PassWord) & "'" )
if rs.eof then
Call Salert("用户名密码错误!","../index.asp")
else
'if Ft_Code<>Session("pSN") then
' Call Salert("请输入正确的验证码!","login.asp")
'else
session("Ft_UserName")=Ft_UserName
response.Redirect "index.asp"
response.end
'end if
end if
end if
End Sub
criedshy 2010-04-08
  • 打赏
  • 举报
回复
using System.Web.Security;
using System.Runtime.InteropServices;

[DllImport("advapi32.dll", CharSet=CharSet.Auto)]
public static extern int LogonUser(String lpszUserName,
String lpszDomain,
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
ref IntPtr phToken);

public const int LOGON32_LOGON_INTERACTIVE = 2;
public const int LOGON32_PROVIDER_DEFAULT = 0;

void Login_Click(Object sender, EventArgs E)
{
IntPtr token = IntPtr.Zero;

if(LogonUser(UserName.Value,
UserDomain.Value,
UserPass.Value,
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
ref token) != 0)
{
FormsAuthentication.RedirectFromLoginPage(UserName.Value,
PersistCookie.Checked);
}
else
{
lblResults.Text = "Invalid Credentials: Please try again";
}
}
criedshy 2010-04-08
  • 打赏
  • 举报
回复
你问题描述太差了

就是用公司的域帐号登录啊,我倒,还费了半天劲
bbqqqbq 2010-04-08
  • 打赏
  • 举报
回复
你们的这个登陆不会是根据别人登陆的IP来看谁是谁的吧?
问题表述得不是很清楚
肖无疾 2010-04-08
  • 打赏
  • 举报
回复

using System.DirectoryServices;

DirectorySearcher ds = new DirectorySearcher("(sAMAccountName=" + Request.LogonUserIdentity.Name.Split('\\')[1] + ")");
SearchResult sr = ds.FindOne();
Response.Write("姓名:" + sr.Properties["name"][0].ToString());
Response.Write("<br>电话:" + sr.Properties["telephonenumber"][0].ToString());
jiayun1 2010-04-08
  • 打赏
  • 举报
回复
以上都很有道理。我先写个登陆页面吧还是。
有了登陆页面后,我在接着写吧。
还得验证一把。des加密的还是。
老外给我的这个项目网址是local的。只有我们自己员工用,而且只有一个页面,全是些选项卡。


好比intranet上,因为是域系统。一但登陆了computer就已经知道谁是谁了,
他们的这个活动目录怎么弄出来的,我是没研究明白,
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jiayun1 的回复:]
引用 9 楼 jiayun1 的回复:
引用 8 楼 liang_zhiqiang 的回复:
用户登录时,提交用户名和密码到数据核对,然后顺路查出部分要用的东西存到session中,然后可以再不同的页面提取自己要信息。

这么复杂?
用户都是我们自己的员工。
别人登不到这个页面。

主要是不知道怎么判断谁是谁。没有登陆页面。还就那一个页面。
[/Quote]
登录的时候不用Name 和PWD么?用就记录成Seesion就行了都?
再不行,从数据库中找详细的???
保存为Cookie也行啊???
jiayun1 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 telankes2000 的回复:]
你这个是winform程序吗
[/Quote]
default.aspx
jiayun1 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiayun1 的回复:]
引用 8 楼 liang_zhiqiang 的回复:
用户登录时,提交用户名和密码到数据核对,然后顺路查出部分要用的东西存到session中,然后可以再不同的页面提取自己要信息。

这么复杂?
用户都是我们自己的员工。
别人登不到这个页面。
[/Quote]
主要是不知道怎么判断谁是谁。没有登陆页面。还就那一个页面。
jiayun1 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiayun1 的回复:]
引用 6 楼 liang_zhiqiang 的回复:
引用楼主 jiayun1 的回复:
哎 题目不知道怎么描述。

内部员工登陆电脑操作,要提取出员工的姓名和电话。
数据库有一张表。有这两个字段。


session?要怎么写代码呢?


你这是要登录电脑操作,还是自己的系统操作。


登陆电脑。
once the employee logged into a co……
[/Quote]

写错了 确切的说登陆到显示的页面。
telankes2000 2010-04-07
  • 打赏
  • 举报
回复
你这个是winform程序吗
jiayun1 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liang_zhiqiang 的回复:]
用户登录时,提交用户名和密码到数据核对,然后顺路查出部分要用的东西存到session中,然后可以再不同的页面提取自己要信息。
[/Quote]
这么复杂?
用户都是我们自己的员工。
别人登不到这个页面。
Liang_ZhiQiang 2010-04-07
  • 打赏
  • 举报
回复
用户登录时,提交用户名和密码到数据核对,然后顺路查出部分要用的东西存到session中,然后可以再不同的页面提取自己要信息。
加载更多回复(7)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧