近期一直研究asp.net身份验证问题,有一些问题一直没搞懂,求救!
以前一直用asp的cookies做身份验证,现在学ASP.net发现太多的不同,现在就以下几点问题,向大家请教!
通过数据库查询用户名/密码后,得到相应记录后,如何把该条记录的各项信息写入cookies,并在其它页如何取值验证?
比如该条记录为如下格式:
用户ID 用户名 密码 公司名称 联系人 电话
或者哪位朋友有相关的教程或源代码,能给小弟,小弟多谢了!!!!
问题点数:100、回复次数:25Top
1 楼shixin1198(好好学习 天天上上)回复于 2006-06-03 10:23:04 得分 5
楼主
现在.net程序 一般 把用户名 跟密码 放到session中
点登陆后 会先执行postback事件(把你的用户名 跟密码 放到Sql语句)
如果 查找成功 你可以在 服务器端事件中 执行成功信息处理程序!
从asp 到asp.net 注意 搞清楚postback runat=server codebehind 等几个 简单的概念Top
2 楼roydux(后台运行中-http://www.LeadNT.org 大家一起来写吧)回复于 2006-06-03 10:27:29 得分 5
有一个Formsauthention....
这个是做验证的Top
3 楼dotnetisgood()回复于 2006-06-03 10:31:57 得分 0
各位好朋友,我是初学,请给小弟简单清楚的说一说,感激!Top
4 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-06-03 10:40:02 得分 5
Formsauthention 你用过没,可以先到msdn查一下,如果有不懂的再具体问Top
5 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-06-03 10:44:14 得分 5
http://community.csdn.net/Expert/topic/4701/4701580.xml?temp=.9203455
http://community.csdn.net/Expert/topic/4701/4701753.xml?temp=.1022303Top
6 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-06-03 10:44:33 得分 2
其实都一样呀,也可以用cookies呀。
其实 Formsauthention.... 就是用的 cookiesTop
7 楼chenghp(不登高山,不知天之高也;不临深溪,不知地之厚也。)回复于 2006-06-03 10:48:12 得分 5
同样可以用Cookies,只是要将数据保存好,最好加密一下!Top
8 楼98star(超越梦想,一起飞。我们需要真心面对。)回复于 2006-06-03 11:14:54 得分 5
http://ami.9966.org/article.asp?id=114Top
9 楼dotnetisgood()回复于 2006-06-03 11:41:40 得分 0
顶,哪位能给一个用cookies写的Forms身份验证程序代码Top
10 楼lazyfish(呆呆虫)回复于 2006-06-03 12:02:39 得分 20
最近在看asp.net forum,对其中的验证机制看得模模糊糊,看完构建安全的 ASP.NET 应用程序中的表单身份验证部分,思路就很清晰了,稍做了点记录,以便查阅:
构建基于forms的验证机制过程如下:
1,设置IIS为可匿名访问和asp.net web.config中设置为form验证
2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用)
3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储
角色到票中,如:
FormsAuthentication.SetAuthCookie(Username,true | false)
cookies保存时间:
HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)
如果需要存储角色,采用:
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(
1, // version
txtUserName.Text, // user name
DateTime.Now, // creation
DateTime.Now.AddMinutes(20),// Expiration
false, // Persistent
roles ); // User data
roles是一个角色字符串数组
string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密
存入Cookie
HttpCookie authCookie =
new HttpCookie(FormsAuthentication.FormsCookieName,
encryptedTicket);
Response.Cookies.Add(authCookie);
4,在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用
票创建IPrincipal对象并存在HttpContext.User中
代码:
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);//解密
string[] roles = authTicket.UserData.Split(new char[]{';'});//根据存入时的格式分解,;或|....
Context.User = new GenericPrincipal(Context.User.Identity, Roles);//存在HttpContext.User中
5,需要对某些页面进行角色控制,有两种方法:
5.1,web.config中加
<location path="EditPost.aspx">
<system.web>
<authorization>
<allow roles="RoleName" />
<deny users="?" />
</authorization>
</system.web>
</location>
5.2,把只能是某种角色访问的文件放在同一目录下,在此目录下添加一个web.config
<configuration>
<system.web>
<authorization>
<allow roles="RoleName" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
说明:子目录的web.config设置优先于父目录的web.config设置
Top
11 楼pengchao_214()回复于 2006-06-03 12:17:36 得分 6
我觉的用Session来做身份验证很方便;
我的做法就是在登入界面中定义一个Session
而在其它的登入界面的load事件中
先判断Session的值是否为空,就可以了Top
12 楼dotnetisgood()回复于 2006-06-03 15:46:02 得分 0
顶,求源代码,像asp.net forums登陆验证那样的Top
13 楼liujiayu10(活着就好)回复于 2006-06-03 16:03:56 得分 5
If result > 0 Then
Response.Cookies("myCookies")("myID") = result
Response.Redirect("Admin.html")
Else
myError()
End IfTop
14 楼liujiayu10(活着就好)回复于 2006-06-03 16:04:42 得分 5
If Request.Cookies("myCookies") Is Nothing Then
Response.Redirect("Admin.aspx")
End IfTop
15 楼liujiayu10(活着就好)回复于 2006-06-03 16:05:18 得分 5
Response.Cookies("myCookies")("myID") = Nothing
Response.Cookies("myCookies").Expires = DateTime.Now.AddMonths(-1)
Response.Redirect("Login.aspx")Top
16 楼ilovejolly(有些伤感)回复于 2006-06-03 16:18:37 得分 2
markTop
17 楼xiahouwen(武眉博<活靶子.NET>)回复于 2006-06-03 16:25:08 得分 5
自己实现IIdentity和IPrincipal接口
参考
http://www.codeproject.com/aspnet/formsroleauth.asp
http://www.codeproject.com/aspnet/rolesbasedauthentication.aspTop
18 楼dotnetisgood()回复于 2006-06-03 16:36:24 得分 0
写和读Cookies现在基本搞清楚了,现在就是有点搞不清,用FORMS验证时,用Cookies的方法与以前Asp用Cookies的方法有什么不同,Forms里有一个timeout属性,Response.Cookies有Expires 到底怎么区分呢Top
19 楼cm180(Tony)回复于 2006-06-03 16:43:19 得分 2
关注,偶慢慢看Top
20 楼xcz1943(小钊)回复于 2006-06-03 17:29:27 得分 2
楼上的朋友说的很清楚了!Top
21 楼tudoux()回复于 2006-06-03 18:05:16 得分 10
可以结合Cookies和session
以下是asp的
1,登录时先记录
session("username")=username
response.Cookies("webusername")("username")=md5(username) 'Cookies最好加密
2,使用时调用函数
function IsUserLogin()
username=session("username")
cookieusername=request.Cookies("webusername")("username")
if username="" or cookieusername="" then
IsUserLogin=false
else
if md5(username)=cookieusername then
IsUserLogin=true
else
IsUserLogin=false
end if
end if
end functionTop
22 楼Jinwmmail()回复于 2006-06-04 15:59:40 得分 2
楼主可参考 PetShop 3.0 里的验证方式,看到代码就很清楚了.
代码只要下载安装就有.Top
23 楼sorrow_man(不会我就问,零下一度)回复于 2006-06-04 20:20:15 得分 2
学习Top
24 楼ztwz(-_-b(偶要像海绵一样的狂吸水水!))回复于 2006-06-05 07:45:27 得分 2
markTop
25 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-06-08 10:29:04 得分 0
收藏Top




