会话中的asp.net商店角色Roles.AddUsertoRole(不是我要找的?)

时间:2011-11-10 17:27:02

标签: c# asp.net mysql

这是陈述问题的奇怪方式,但这正是我想要实现的目标。

这就是我正在做的事情

连接到MySQL Db(完整)
验证(完成)
选择我在mySQL中指定的所有角色(完整)
以某种方式存储这些角色,以便我可以根据角色成员身份显示控件和链接。

我刚刚想到了解决web.config中的mySQL部分

system.web
    membership defaultProvider="MySQLMembershipProvider" /
roleManager enabled="true" defaultProvider="MySQLRoleProvider" /
/system.web

我正在使用它作为代码

MySqlDataReader dr2 = cmd2.ExecuteReader();
                while (dr2.Read())
                {
                    string roleName = dr2["role"].ToString();
                    //error here -> Roles.AddUserToRole(userID, roleName);
                }

用户''@ localhost'拒绝访问(使用密码:否)

Roles.AddUserToRole真的是我想要满足我的需求。我想我需要在sessio中存储用户角色不是吗?我

1 个答案:

答案 0 :(得分:0)

Roles.AddUserToRole真的是我想要满足我的需求。我想我需要将用户角色存储在sessio中吗?不是吗?

NO!将用户添加到角色意味着提供者将用户链接到角色。由于您已经将用户链接起来,这是一个毫无价值的方向。

以某种方式存储这些角色,以便根据角色成员身份显示控件和链接

你为什么需要这样做?在页面级别,您可以使用trimmings设置ASP.NET安全性,以便在用户视图不正确的情况下自动从用户视图中排除页面。至于sections / controls / etc,您可以检查用户是否在角色中,然后确定是否显示它。如果使用部分,可以通过声明方式而不是以编程方式完成许多部分。

一个警告是您的会员提供商支持的。 “开箱即用”提供程序(Access和SQL Server)支持安全修整和声明性语法,用于排除页面的各个部分等。如果MySQL提供程序完全实现了所有方法,那么您应该可以正常使用它,以及。如果您创建自定义提供程序,则必须实现某些部分才能使其工作。

简短的故事是,一旦你获得了会员资格(对该人进行身份验证),您就可以访问该人是否在角色中。这是.NET中成员资格提供程序的标准实现的所有部分。只要您用于MySQL的提供程序涵盖所有相同的方法,您就可以进行快速谷歌搜索,并找到大量显示如何根据角色显示/隐藏位的网站。