代码之家  ›  专栏  ›  技术社区  ›  Colin O'Dell

如何在ASP.NET中手动设置用户的角色。网络MVC?

  •  18
  • Colin O'Dell  · 技术社区  · 17 年前

    编辑:

    目前我没有使用角色提供者,创建一个似乎很麻烦。我知道这不是“最佳实践”,但我只需要在登录时分配两个角色中的一个(这永远不会改变)。将角色信息存储在数据库中也是没有意义的,因为用户已经被他们的角色分成了2个数据库。

    if (AdminDB.ValidateUser(username,password)==true) {
         SetAuthCookie(username);
         AssociateUserWithRole(username, 'admin');
    } elseif (UserDB.ValidateUser(username,password)==true) {
         SetAuthCookie(username);
         AssociateUserWithRole(username, 'user');
    } else {
         // Login failed.
    }
    

    4 回复  |  直到 17 年前
        1
  •  16
  •   tvanfosson    17 年前

    Implementing a role provider

    AuthorizeAttribute 并用您自己的身份验证和角色检查位替换它。一旦通过身份验证,将用户的角色存储在会话中,并使用您的属性和为修饰它的方法/类提供的属性参数进行检查。

        2
  •  6
  •   Kevin LaBranche    17 年前

    如果您正在使用会员资格&;asp.net内置的角色然后查看AddUserToRole和RemoveUserFromRole:

    http://msdn.microsoft.com/en-us/library/system.web.security.roles.addusertorole.aspx

    我无法从你的帖子中看出你是否没有使用角色提供者,或者你是否说你不想创建自己的角色提供者。如果您没有使用内置的角色提供者,那么您将不得不使用您现有的任何编码机制,根据用户登录的方式/位置在登录时切换用户。

    您正在使用它显示的表单auth cookie,因此覆盖global.asax文件的authenticateRequest,根据需要设置角色并创建票证。

    http://csharpdotnetfreak.blogspot.com/2009/02/formsauthentication-ticket-roles-aspnet.html

    该示例仅“获取”角色,但您可以在此处添加/更改角色。

        3
  •  2
  •   user386167 user386167    14 年前

    我相信这篇文章(尽管是从2003年开始的)清楚地描述了为用户分配角色并在每次请求时替换主体的过程(类似于NerdDinner所做的):

    使用基于角色的安全性授权用户: http://msdn.microsoft.com/en-us/library/aa289844%28v=vs.71%29.aspx

        4
  •  2
  •   Spook    10 年前

    如果有人在OWIN上遇到同样的问题,我想这可能会有所帮助:

    var identityResult = await manager.CreateIdentityAsync(login, "MyAppCookie");
    
    if (<user is admin>)
        identityResult.AddClaim(new System.Security.Claims.Claim(identityResult.RoleClaimType, "Admin"));
    else
        identityResult.AddClaim(new System.Security.Claims.Claim(identityResult.RoleClaimType, "User"));
    
    HttpContext.Current.GetOwinContext().Authentication.SignIn(identityResult);
    
    推荐文章