|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.一向对forms考证中的脚色很含混,不晓得怎样弄,今天早晨细心看了下csdn的杂志,内心略微有点底,明天凌晨一上csdn,就看到思回年夜人回的一篇贴,是关于asp.net中的forms考证roles,地点是:http://www.codeproject.com/aspnet/formsroleauth.asp
汗,怎样是E文,我的e文特差,可是不晓得为何此次居然被我看懂了,仿照他的做,居然乐成!,特把历程和我的了解写出来,但愿对和我一样的菜鸟有点匡助,同时我的一些了解大概毛病,但愿列位老迈们可以指出,十分感激,上面我入手下手边翻译边依照他的做:
1,起首我们新建一个数据库,名字叫web,增加一个表叫users,内里有三个字段,username字段为主键,username和password字段设置为团结索引,不晓得我如许了解对么?请斧正
CREATE
DATABASEwebCREATETABLEusers
(
usernamenvarchar(64)CONSTRAINTusers_PKPRIMARYKEY,
passwordnvarchar(128),
rolesnvarchar(64)
)
CREATEINDEXcredentialsONusers
(
username,
password
)
我们再在users表中增加两个用户:pwqzc123456Administrator,User
pwq123456User
第一个为名字,第二个为暗码,第三个为用户所具有的脚色,多个脚色用,逗号分隔
2,创立一个上岸页login.aspx
内里放两个TextBox和一个按钮,在按钮的单击事务里写代码:
privatevoidbtnLogin_Click(objectsender,System.EventArgse)
{
//初始化FormsAuthentication
FormsAuthentication.Initialize();
//创立个connection和command工具
SqlConnectionconn=newSqlConnection("server=(local);uid=sa;pwd=mydream54win;database=web");
SqlCommandcmd=conn.CreateCommand();
cmd.CommandText="selectrolesfromuserswhereusername=@usernameandpassword=@password";
//增加参数和给参数赋值
cmd.Parameters.Add("@username",SqlDbType.VarChar,64);
cmd.Parameters["@username"].Value=Username.Value;
cmd.Parameters.Add("@password",SqlDbType.VarChar,128);
cmd.Parameters["@password"].Value=Password.Value;
//翻开数据库毗连
conn.Open();
//实行命令
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read())
{
//创立一个新的考证票FormsAuthenticationTicket
FormsAuthenticationTicketticket=newFormsAuthenticationTicket(
1,//票版本号
Username.Value,//cookie名字
DateTime.Now,//天生cookie工夫
DateTime.Now.AddMinutes(30),//cookie的无效工夫
false,//是否是永世存在的cookie
reader.GetString(0));//从数据库读到的用户脚色数据
//把考证票加密
stringhashTicket=FormsAuthentication.Encrypt(ticket);
//设置考证票cookie,第一个参数为cookie的名字,第二个参数为cookie的值也就是加密后的票
HttpCookiecookie=newHttpCookie(FormsAuthentication.FormsCookieName,hashTicket);
//设置cookie的无效期是一个星期
cookie.Expires=DateTime.Now.AddDays(7);
//把cookie加进Response工具产生到客户端
Response.Cookies.Add(cookie);
//失掉哀求的url
stringrequestUrl=FormsAuthentication.GetRedirectUrl(FormsAuthentication.FormsCookieName,false);
//不要利用FormsAuthentication.RedirectFromLoginPage办法,由于这个办法会重写cookie
//从头定向到哀求的url
Response.Redirect(requestUrl);
}
else
{
//假如不存在此用户,则提醒一些毛病
ErrorLabel.Text="用户名大概暗码毛病,请重试!";
ErrorLabel.Visible=true;
}
//封闭数据库毗连和reader
reader.Close();
conn.Close();
}
3,第三步,在使用程序的Global.asax中,找到Application_AuthenticateRequest,写上面代码,记的要导进usingSystem.Security.Principal;
usingSystem.Web.Security;这两个名字空间,代码以下:
protectedvoidApplication_AuthenticateRequest(Objectsender,EventArgse)
{
if(HttpContext.Current.User!=null)//假如以后的http信息中存在用户信息
{
if(HttpContext.Current.User.Identity.IsAuthenticated)//假如以后用户的身份已经由过程了考证
{
if(HttpContext.Current.User.IdentityisFormsIdentity)
{
//假如以后用户身份是FormsIdentity类即窗体考证类,此类有个属功能够会见以后用户的考证票
FormsIdentityfi=(FormsIdentity)HttpContext.Current.User.Identity;//创立个FormsIdentity类,用他来会见以后用户的考证票
//取得用户的考证票
FormsAuthenticationTicketticket=fi.Ticket;
//从考证票中取得用户数据也就是脚色数据
stringuserData=ticket.UserData;
//把用户数据用,分化成脚色数组
string[]roles=userData.Split(,);
//重写以后用户信息,就是把脚色信息也到场到用户信息中
HttpContext.Current.User=newGenericPrincipal(fi,roles);
}
}
}
}
4,第四步,修正web.config
<configuration>
<system.web>
<authenticationmode="Forms">
<formsname="MYWEBAPP.ASPXAUTH"
loginUrl="login.aspx"
protection="All"
path="/"/>
</authentication>
<authorization>
<allowusers="*"/>
</authorization>
</system.web>
<locationpath="admins">
<system.web>
<authorization>
<!--Orderandcaseareimportantbelow-->
<allowroles="Administrator"/>
<denyusers="*"/>
</authorization>
</system.web>
</location>
<locationpath="users">
<system.web>
<authorization>
<!--Orderandcaseareimportantbelow-->
<allowroles="User"/>
<denyusers="*"/>
</authorization>
</system.web>
</location>
</co
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时. |
|