在Asp.net Web应用程序项目中创建用户角色

时间:2017-03-09 13:50:32

标签: c# asp.net authentication web authorization

我需要所有专家的指导,以完成一项简单的任务。 我正在研究我的最后一年项目,这是一个基于Web的应用程序。 在这个应用程序中,我必须创建几个用户,这些用户将执行不同的操作,例如,会计将管理费用,管理员将管理教师和学生帐户等。 我正在努力工作,我学会了简单的身份验证。 我可以根据用户名授权用户,并允许他们访问特定页面或具有多个页面的特定文件夹。 我这样做是通过使用表单身份验证。 但 现在我想创建用户角色并为不同的用户分配不同的角色,这样我就不必在web配置文件中添加每个用户名。 请建议我最简单的方法。是否有任何书籍,文章或youtube视频,我可以从中学习它? 我搜索了堆栈溢出和msdn,但我无法理解。 我在等你的建议, 提前致谢。 我也不是在MVC工作。 我正在使用.net 4.5,visual studio 2012和sql server 2014

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式将角色附加到您的用户: 在globl.asax中添加以下事件,读取要分配给已登录用户的角色,创建新的GenericPincipal并将其分配给用户。

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

            var app = (HttpApplication) sender;
            var ctx = app.Context;

            if (ctx.User != null)
            {
                //Read the roles from database for current user, create a new Principal, attach the principal to the user (im using EF)               
                using (var context = new BackendDbContext())
                {
                    var user = context.Set<User>().Find(Convert.ToInt32(ctx.User.Identity.Name));
                    var identity = new GenericIdentity(user.UserId.ToString());
                    var principal = new GenericPrincipal(
                        identity,
                        new[] {user.UserRoleId.ToString()});

                    ctx.User = principal;
                }
            }
         }