个人刚读完一个基于Forms认证的项目,一点感受,大家认为我讲的有没道理,或者是这种认证可能还有我没看到的优势,请高手指点。
12 个解决方案
#1
呵呵
#2
不是微软把Form验证做复杂了
而是你把Form验证想简单了
而是你把Form验证想简单了
#3
完全可以在users表中加入roles角色字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
角色字段这样放置的话,一个用户怎么对应多个角色?
还有你用session的方式做,没问题,可form验证用的是cookie,和你的不冲突啊
form验证本身还是很不错的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
角色字段这样放置的话,一个用户怎么对应多个角色?
还有你用session的方式做,没问题,可form验证用的是cookie,和你的不冲突啊
form验证本身还是很不错的
#4
Forms认证与你所说的唯一区别是它是加密放在Cookie里的
而不是在session中,在Forms认证中同样可以用你所说的那种认证方式、角色等
而不是在session中,在Forms认证中同样可以用你所说的那种认证方式、角色等
#5
Forms认证的好处是他是自动验证身份,未通过时自动跳转到登录页的
如果你用Session,必须自己对每一个页面加验证身份代码
如果你用Session,必须自己对每一个页面加验证身份代码
#6
你只在main.aspx.cs中对session["roles"]进行判断
如果他在地址栏手动输入某个页面,难道就可以随便访问?
如果他在地址栏手动输入某个页面,难道就可以随便访问?
#7
//复杂而难以理解的设置
我怎么觉得是简单而易以理解的呢?
我怎么觉得是简单而易以理解的呢?
#8
谢谢各位的高见,以下如何?
这样也足以实现了吧:
web.config中:<authentication mode="Forms">
<forms timeout="60" loginUrl="ST_Login.aspx"/>
</authentication>
Login.aspx.cs中:FormsAuthentication.SetAuthCookie(txtName.Text, false);
Response.Redirect("ST_Common/ST_Main.aspx");
Main.aspx.cs中:int st_type = st_auth.ST_LoginType(Context.User.Identity.Name);
这样也足以实现了吧:
web.config中:<authentication mode="Forms">
<forms timeout="60" loginUrl="ST_Login.aspx"/>
</authentication>
Login.aspx.cs中:FormsAuthentication.SetAuthCookie(txtName.Text, false);
Response.Redirect("ST_Common/ST_Main.aspx");
Main.aspx.cs中:int st_type = st_auth.ST_LoginType(Context.User.Identity.Name);
#9
你这种实现方式不就是Form吗?
孙悟空就以为自己能跳出如来的手掌呢
孙悟空就以为自己能跳出如来的手掌呢
#10
楼主很聪明,孺子可教~
#11
我是说省却了 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
UserNameTextBox.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
true,
reader.GetString(0),
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
和global.asax.cs中的代码设置,省不省略这一部分的区别主要体现在哪些方面?
1,
UserNameTextBox.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
true,
reader.GetString(0),
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
和global.asax.cs中的代码设置,省不省略这一部分的区别主要体现在哪些方面?
#12
这部分加上去以后,可以实现基于角色的授权,前面的都是基于用户的单个授权。
#1
呵呵
#2
不是微软把Form验证做复杂了
而是你把Form验证想简单了
而是你把Form验证想简单了
#3
完全可以在users表中加入roles角色字段
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
角色字段这样放置的话,一个用户怎么对应多个角色?
还有你用session的方式做,没问题,可form验证用的是cookie,和你的不冲突啊
form验证本身还是很不错的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
角色字段这样放置的话,一个用户怎么对应多个角色?
还有你用session的方式做,没问题,可form验证用的是cookie,和你的不冲突啊
form验证本身还是很不错的
#4
Forms认证与你所说的唯一区别是它是加密放在Cookie里的
而不是在session中,在Forms认证中同样可以用你所说的那种认证方式、角色等
而不是在session中,在Forms认证中同样可以用你所说的那种认证方式、角色等
#5
Forms认证的好处是他是自动验证身份,未通过时自动跳转到登录页的
如果你用Session,必须自己对每一个页面加验证身份代码
如果你用Session,必须自己对每一个页面加验证身份代码
#6
你只在main.aspx.cs中对session["roles"]进行判断
如果他在地址栏手动输入某个页面,难道就可以随便访问?
如果他在地址栏手动输入某个页面,难道就可以随便访问?
#7
//复杂而难以理解的设置
我怎么觉得是简单而易以理解的呢?
我怎么觉得是简单而易以理解的呢?
#8
谢谢各位的高见,以下如何?
这样也足以实现了吧:
web.config中:<authentication mode="Forms">
<forms timeout="60" loginUrl="ST_Login.aspx"/>
</authentication>
Login.aspx.cs中:FormsAuthentication.SetAuthCookie(txtName.Text, false);
Response.Redirect("ST_Common/ST_Main.aspx");
Main.aspx.cs中:int st_type = st_auth.ST_LoginType(Context.User.Identity.Name);
这样也足以实现了吧:
web.config中:<authentication mode="Forms">
<forms timeout="60" loginUrl="ST_Login.aspx"/>
</authentication>
Login.aspx.cs中:FormsAuthentication.SetAuthCookie(txtName.Text, false);
Response.Redirect("ST_Common/ST_Main.aspx");
Main.aspx.cs中:int st_type = st_auth.ST_LoginType(Context.User.Identity.Name);
#9
你这种实现方式不就是Form吗?
孙悟空就以为自己能跳出如来的手掌呢
孙悟空就以为自己能跳出如来的手掌呢
#10
楼主很聪明,孺子可教~
#11
我是说省却了 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
UserNameTextBox.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
true,
reader.GetString(0),
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
和global.asax.cs中的代码设置,省不省略这一部分的区别主要体现在哪些方面?
1,
UserNameTextBox.Text,
DateTime.Now,
DateTime.Now.AddMinutes(30),
true,
reader.GetString(0),
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
和global.asax.cs中的代码设置,省不省略这一部分的区别主要体现在哪些方面?
#12
这部分加上去以后,可以实现基于角色的授权,前面的都是基于用户的单个授权。