标题:[原创]利用ASP.NET框架创建网站登陆
只看楼主
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
得分:0 
System.Web.Security.FormsAuthentication.SetAuthCookie(userid, false)
这句不行得把userid换掉,不然会提示找不到

继续向前-------------------努力成为高手
2007-06-11 01:23
yyldir
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-11-23
得分:0 

太感谢了,如果你出一本书的话,保证第一个买你的本


2007-06-11 12:45
beblue
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2007-3-24
得分:0 
你说在受权限访问的那些页里里什么都不要写,只要加个配置就OK了,但这样假如我没有登陆但我访问了?那结果会乍样?如果我没登陆访问那些有权限的页面时,我想让页面跳转到登陆页面,那又应该怎么写

继续向前-------------------努力成为高手
2007-06-15 10:45
ProtossYang
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-15
得分:0 
回复:(铲铲)[原创]利用ASP.NET框架创建网站登陆

楼主您好,
public void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (this.Request.IsAuthenticated)
{
//这里简化了操作,可以从数据库中获得角色信息用以构造rolesStrArr数组。作为示例,我们为除了a之外的用户分配了管理员角色
string[] rolesStrArr;
if (this.Context.User.Identity.Name == "a")
{
rolesStrArr = new string[]{"普通用户"};
}
else
{
rolesStrArr = new string[]{"普通用户","管理员"};
}
this.Context.User = new System.Security.Principal.GenericPrincipal(this.User.Identity, rolesStrArr);
}
}
你的这端代码是不是少了些东西,只更新了this.Context.User的引用应该不可以吧,因为webconfig在权限管理上是通过数据库访问实现的,所以你应该把添加的Role Update一下,要不然它的Roles还是原来没添加之前的。

[此贴子已经被作者于2007-6-15 12:41:54编辑过]

2007-06-15 12:40
ProtossYang
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-15
得分:0 
回复:(beblue)你说在受权限访问的那些页里里什么都...

webconfig默认会把无权限的用户跳转到Login.aspx,如果没有这个页面就会出现HTTP401未经授权错误,你可以通过修改webconfig的<forms loginUrl="Login.aspx"/>节来修改返回Url地址。

[此贴子已经被作者于2007-6-15 12:49:56编辑过]

2007-06-15 12:48
tiandizzb
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-6-16
得分:0 
不赖,以后用得着.
歇歇也谢谢.
2007-06-16 09:34
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
得分:0 
以下是引用ProtossYang在2007-6-15 12:40:09的发言:

楼主您好,
public void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (this.Request.IsAuthenticated)
{
//这里简化了操作,可以从数据库中获得角色信息用以构造rolesStrArr数组。作为示例,我们为除了a之外的用户分配了管理员角色
string[] rolesStrArr;
if (this.Context.User.Identity.Name == "a")
{
rolesStrArr = new string[]{"普通用户"};
}
else
{
rolesStrArr = new string[]{"普通用户","管理员"};
}
this.Context.User = new System.Security.Principal.GenericPrincipal(this.User.Identity, rolesStrArr);
}
}
你的这端代码是不是少了些东西,只更新了this.Context.User的引用应该不可以吧,因为webconfig在权限管理上是通过数据库访问实现的,所以你应该把添加的Role Update一下,要不然它的Roles还是原来没添加之前的。



前面已经说过,实际上这里是做过简化的。原理很简单,用户拥有的角色名称可以是一个或者多个,他们实际上是以一个字符串数组的形式表示,这个数组有多少个字符串元素,那么用户就有多少个角色。
即使是使用数据库存储,那没有关系。我们不关心你在数据库中如何存储和实现,只是在这个地方,你能够构造适当的逻辑,为用户持有的角色表现成字符串数组就可以了。
只有Context.User属性是可写的,其他User属性只可以获取而不能设置。实际上这是在一个HttpApplication的Context中实现Iprincipal接口的对象,它会传播到稍后构造的Page对象对象和Request对象中。
至于“Role Update一下”我不太清楚你的表述是何含义。


铲铲是也
2007-06-16 23:35
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
得分:0 
补充一点,Web.config的权限管理和数据库是没有关系的。我们利用数据库是利用数据库来存储你对用户所做的权限,或者规范一点就是说存储用户应该持有的角色是什么。不使用数据库,上面的方法仍然有效。我们不关心如何存储这些权限信息,你只需要在这里构造能够取出来,重新构造一个GenericPrincipal对象即可

铲铲是也
2007-06-16 23:38
Sunny1111
Rank: 1
等 级:新手上路
威 望:2
帖 子:465
专家分:0
注 册:2007-6-15
得分:0 

楼主真是好厉害~~向楼主学习!!!顶

2007-06-18 11:12
judyliu
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-20
得分:0 
我是菜鸟,先收藏吧!谢谢
2007-06-25 12:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67635-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094643 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved