Tag: asp.net authorization

用户角色/授权在ASP.NET标识中不起作用

在我们的DbContext.cs上有这个(模型构建器)代码 base.OnModelCreating(modelBuilder); modelBuilder.Entity().HasKey(l => l.UserId); modelBuilder.Entity().HasKey(r => r.Id); modelBuilder.Entity().HasKey(r => new { r.RoleId, r.UserId }); modelBuilder.Entity().ToTable(“ApplicationUser”); 除授权/用户角色外,一切正常。 检查完所有表后,我注意到IdentityUserRoles表创建了4列: RoleId,UserId,IdentityRole_Id和ApplicationUser_Id。 我发现, IdentityRole_Id和ApplicationUser_Id [外键]被映射或使用,而不是RoleId和UserId [主键]。 不幸的是,身份(Id)数据被插入到RoleId / UserId列中,IdenityRole_Id / ApplicationUser_Id默认为NULL 。 请帮忙。 我的代码: public class RqDbContext : DbContext { private const string ConnectionString = “RqDbContext”; public RqDbContext() : base(ConnectionString) { } public static RqDbContext Create() { return […]

带有角色的MVC 4中的自定义授权属性

我创建了一个自定义的角色基​​本授权属性。我的想法是当不允许角色名为“employee”的用户登录时通过URL访问“admin”页面。 但是当我在Employee控制器中实现[MyRoleAuthorization]并登录时,错误显示“此网页有一个重定向循环”。 这是[MyRoleAuthorization]代码 public class MyRoleAuthorization : AuthorizeAttribute { string isAuthorized; private string AuthorizeUser(AuthorizationContext filterContext) { if (filterContext.RequestContext.HttpContext != null) { var context = filterContext.RequestContext.HttpContext; if (Convert.ToString(context.Session[“RoleName”]) == “Admin”) { isAuthorized = “Admin”; } else if (Convert.ToString(context.Session[“RoleName”]) == “Employee”) { isAuthorized = “Employee”; } else if (Convert.ToString((context.Session[“RoleName”])) == “Customer”) { isAuthorized = “Customer”; } else […]

丰富的Twitter数字/谷歌Auth与OpenIdDictServer

我们的应用需要通过手机号码或Google登录。 我们计划通过Twitter数字进行手机号码validation。 我理解的注册和认证流程如下: 移动应用程序使用Twitter数字或Google登录进行丰富的身份validation(用户可以使用丰富的身份validation而不是打开网络浏览器选项卡获得更好的用户体验)。 Twitter Digits / Google Sign In返回身份令牌。 移动应用程序将AuthServer调用到SignIn并显示身份令牌。 身份服务器使用Digits服务或Google Auth服务validation所呈现的身份令牌。 一旦validation,AuthServer将尝试找到用户,如果不存在,它将创建一个。 AuthServer将Access Token返回给移动应用程序。 现在,我正在寻找实施步骤#3-4的选项。 目前,我所做的是修改令牌端点代码,该代码将用户名作为电话号码或电子邮件地址和密码作为Google / Twitter数字ID令牌发送。 现在,由于auth服务器需要知道发送的密码实际上是需要通过第三方服务validation的令牌,我通过在TokenHint中发送服务名称“Digits”或“Google”来解决它。 这非常有效,但我想知道什么是最干净的方式来支持我想要实现的目标。