关于Forms Authentication的问题!!!

aleckz 2001-11-29 06:50:19
在web application中使用forms authentication,当客户端被重定向到
登录页面后,根据SDK中的例子,收集了用户名与密码并作了必要的验证
之后,使用FormsAuthentication.RedirectFromLoginPage方法将客户
送到原先访问的页面。在此过程中,系统隐含地创建了一个GenericPrincipal
对象。
我想问的是,如何在验证后,指定该用户的role呢?
如果不能指定用户的role,那么在web.config文件中,就无法根据roles来做
authorization了。
如果直接创建一个new GenericPrincipal并指定role,那么如何将其返回到
客户端呢?
我翻遍了SDK也没有找到相关的解释,请大家指教!
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aleckz 2001-12-01
  • 打赏
  • 举报
回复
thanks for your help!
aleckz 2001-11-30
  • 打赏
  • 举报
回复
在该事件中如何设置呢?它的参数好像是通用的EventArgs...
验证之后又如何取得role呢?
IPrincipal.IsInRole只能判断是否属于某个role,但是如何直接取得roles呢?
juqiang 2001-11-30
  • 打赏
  • 举报
回复
study!!!
niwalker 2001-11-30
  • 打赏
  • 举报
回复
下面是我曾在Beta1时作过的程序片断和方法,我不知道beta2有没有变动:
1、首先假设我们已经为我们的用户在数据库中建立了2个表,一个用户信息表和一个和用户角色分组表。
2、从IPrincipal派生一个类,类中声明一个Roles的集合属性。重载它的IsInRole方法:
public class MyPrincipal: IPrincipal
{
private IIdentity m_Identity;
private StringCollection m_Roles; //StringCollection在beta2好像有变动

public MyPrincipla(IIdentity id,StringCollection roles)
{
m_Identity=id;
m_Roles=roles;
}

public IIdentity Identity
{
get{ return m_Identity;}

}
public bool IsInRole(String role) //重载
{
bool bResult=false;
if(role!=null) return m_Roles.Contains(role);
return bResult;
}
}

3、当用户登陆系统时,会触发验证事件,这将调用Application.AuthenticateRequest()

....
protected void Application.AuthenticateRequest(Object sender,EventArgs e)
{
if(Context.Request.IsAuthenticated)
{
//从数据库中提取该用户全部角色赋给Roles,可以从Context.User.Indentity获取用户的信息,假设我们有一个函数GetUserRoles(String UserName)取得用户的角色信息
StringCollection Roles=GetUserRoles(Context.User.Identity.Name);
Context.User=new MyPrincipal(Context.User.Identity,Roles);
}
}

...

4、此后,你就可以使用这个Context.User.IsInRole("角色")来鉴别该用户是否在角色中了。

应该没有问题了吧?



niwalker 2001-11-29
  • 打赏
  • 举报
回复
你需要自己创建用户的Role,然后在global.asax中的相应函数(例如 Application.AuthenticateRequest())里进行设置。之后,你就可以从User对象取得Role了。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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