有誰能幫我解決這個問題﹐我這里只有100分全給他

zhiri 2003-08-30 02:18:03
就是我想得到這個user.identity.name值﹐卻怎么也得不到﹐有誰能幫我﹐
我的100分全給。
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhiri 2003-09-05
  • 打赏
  • 举报
回复
stpangpang(胖在一方)50
webdiyer(陕北吴旗娃)50
webdiyer 2003-08-30
  • 打赏
  • 举报
回复
先要判断用户是否已通过认证,即Request.IsAuthenticated==true,如果没通过认证,User.Identity.Name就是null值,只有通过认证后才不为空。
stpangpang 2003-08-30
  • 打赏
  • 举报
回复
我写的一段 代码,看看对你有没有帮助~~

我写的一个 登陆窗口 在数据库中,每个注册用户有一个 权限 编号(工有三种编号) ,就是 底下 role 变量存储的 , 同时建立 三个文件夹 ,配置 每个文件夹中 的 web.config
允许特定权限的人访问 。

Global.asax.cs
********************************
using System.Web.Security;
using System.Security.Principal;

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication app=(HttpApplication)sender;
HttpContext ctx=app.Context;
//如果验证成功
if(ctx.Request.IsAuthenticated==true)
{
FormsIdentity typeID=(FormsIdentity)ctx.User.Identity;
FormsAuthenticationTicket ticket=typeID.Ticket;
string []role=ticket.UserData.Split(',');
ctx.User=new GenericPrincipal(typeID,role);
}

}



login.aspx.cs
***********************
private void butLogin_Click(object sender, System.EventArgs e)
{
string uid=Conn.Replace(this.txtUid.Text);
string pwd=Conn.Replace(this.txtPwd.Text);
if(uid=="" || pwd=="")
{
//this.lblInfo.Text="请填写用户名和密码";
Page.RegisterStartupScript("","<script language='JavaScript'>alert('请填写用户名和密码');document.forms[0].txtUid.focus();</script>");

return;
}
openDB=new Conn();
//打开数据库
try
{
openDB.Open();
}
catch
{
return;
}
SqlDataReader reader;
strSql=new StringBuilder();

strSql.Append("select password from register where nickname='" + uid + "' and flag='A';");
strSql.Append("select figureid,empid,depid from operator where flag='A' and empid=(select empid from register where nickname='" + uid + "' and flag='A');");
openDB.Search(strSql.ToString(),openDB.conn,out reader);
//如果有 匹配 nickName 的用户
if(reader.Read())
{
//如果密码匹配
if(pwd==reader.GetString(0))
{

if(reader.NextResult())
{
//取得权限
if(reader.Read())
{
string role=reader.GetInt32(0).ToString();
//产生 Ticket
FormsAuthenticationTicket userTicket=new FormsAuthenticationTicket(1,uid,
DateTime.Now,DateTime.Now.AddMinutes(30),true,role,"login");
//加密票据
string hashUserTicket=FormsAuthentication.Encrypt(userTicket);
//产生新的Cookie
HttpCookie userCookie=new HttpCookie("login",hashUserTicket);
Response.Cookies.Add(userCookie);

//保存EmpID ,DepID,rightID,nickName 保存到 Session 中
Session["EmpID"]=reader.GetString(1);
Session["DepID"]=reader.GetString(2);
Session["rightID"]=role;
Session["nickName"]=uid;

reader.Close();
strSql.Remove(0,strSql.Length);

//添加登陆信息到logonInfo
strSql.Append("insert into logoninfo(nickname,loginIP,figureID) values");
strSql.Append("('" + Conn.Replace(this.txtUid.Text) + "','" + Request.UserHostAddress + "','" + role + "')");
string flag=openDB.Write(strSql.ToString(),openDB.conn);


//返回用户原来返回的页面
Context.Response.Redirect(Context.Request["ReturnUrl"],true);
}
else
{
/***********************************************/
//出现此中情况的可能时,在Register表中有此员工记录
//而在在Operator表中没有此员工的记录
//所以不能登录此系统
//this.lblInfo.Text="此用户没有访问权限,请与系统管理员联系!";
Page.RegisterStartupScript("","<script language='JavaScript'>alert('此用户没有访问权限,请与系统管理员联系!');document.forms[0].txtUid.focus();document.forms[0].txtUid.select();</script>");


return;
}
}

}
else
{
//this.lblInfo.Text="密码错误";
this.txtPwd.Text="";
Page.RegisterStartupScript("","<script language='JavaScript'>alert('密码错误!');document.forms[0].txtPwd.focus();</script>");



return;
}
}
else
{
//this.lblInfo.Text="没有此用户!";
this.txtUid.Text="";
Page.RegisterStartupScript("","<script language='JavaScript'>alert('没有此用户或着此用户帐号被停用!');document.forms[0].txtUid.focus()</script>");
return;
}
reader.Close();
openDB.Close();
}

总体 web.config 的配置
<authentication mode="Forms">
<forms name="login" path="/" loginUrl="login.aspx">
<credentials passwordFormat="Clear">
<user name="guest" password="guest"/>
</credentials>
</forms>


</authentication>

<authorization>
<deny users="?"/>
</authorization>

希望对你有点帮助

阿森纳2013 2003-08-30
  • 打赏
  • 举报
回复
贴出代码来看看!
basil 2003-08-30
  • 打赏
  • 举报
回复
贴出代码来看看!

62,041

社区成员

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

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

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

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