Tag: asp.net roles

ASP.NET中的自定义角色

我正在使用一个ASP.NET网站,该网站使用表单身份validation和自定义身份validation机制(以编程方式在protected void Login_Authenticate(object sender, AuthenticateEventArgs e)上设置e.Authenticated )。 我有一个ASP.NET站点地图。 某些元素必须仅显示给登录用户。 其他用户必须仅显示给一个唯一用户(即管理员,由用户名标识,永远不会改变)。 我想避免的: 设置自定义角色提供程序:为这样的基本事物编写的代码太多, 转换现有代码,例如删除站点地图并将其替换为代码隐藏解决方案。 我想做的事: 一个纯代码隐藏解决方案,它允许我在authenticate事件上分配角色。 可能吗? 怎么样? 如果没有,是否有一个易于做的解决方法?

从AuthorizeAttributeinheritance的属性不起作用

我目前正在尝试基于用户角色在新的ASP MVC 5应用程序中实现安全性。 目标是防止用户访问某些控制器或控制器方法,如果他们没有某个角色(或更高)。 基于我到目前为止所读到的问题,我创建了一个inheritanceAuthorizeAttribute的属性,它看起来像这样(MyAppRole是枚举,顺便说一句): [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class AuthorizeRoleOrSuperiorAttribute : AuthorizeAttribute { private MyAppRole _authorizedRole; public AuthorizeRoleOrSuperiorAttribute(MyAppRole authorizedRole) { //Breakpoint here _authorizedRole = authorizedRole; } public override void OnAuthorization(HttpActionContext actionContext) { //Breakpoint here base.OnAuthorization(actionContext); if (!UserInfo.GetUserRoles().Any(r => (int)r >= (int)_authorizedRole)) throw new UnauthorizedAccessException(ErrorsModule.RoleMissing); } } 我在方法和/或控制器上这样称呼它: […]

ASP.NET身份,立即将另一个用户添加到角色(他们不必再次注销)

首先,我知道这个问题: MVC 5 AddToRole在它运行之前需要注销吗? 而这一个: 什么是ASP.NET Identity的IUserSecurityStampStore 接口? 所以请不要将其标记为副本。 我正在尝试将另一个用户添加到角色中(即我们添加到该角色的用户不是当前用户。如果是这样,我链接到的第一个问题的答案就足够了。) 像这样: IdentityResult result = await userManager.AddToRoleAsync(userID, roleName); 我正在做的两种情况是:从管理页面,当前用户是管理员; 以及基本身份validation保护的webhook(根本没有当前用户)。 问题:如果此更改适用的用户已登录并使用该应用程序,我需要立即应用“添加到角色”更改。 他们不应该再次注销并再次进行更改,而且需要立即进行。 感谢大家。 编辑:顺便说一下,User.IsInRole(roleName)需要注销和登录才能反映被添加到新角色。 UserManager.IsInRole(userID,roleName)没有,因为(我假设)它直接进入数据库表进行检查。 但是如果用户点击了一个以他们刚刚添加的角色担保的动作方法,他们仍然需要再次登录,这是公平的。 如果有办法解决这个问题仍然很好奇。 编辑:以下是Authorize属性的源代码: https : //github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/AuthorizeAttribute.cs 它使用User.IsInRole,这本质上是我们需要再次登录的原因。 似乎覆盖的方法是AuthorizeCore(HttpContextBase httpContext)。 我现在不是很勇敢或者不够好,但是如果你想要有很多人会发现这很有帮助。

ASP.NET MVC单点登录和角色

我使用基于以下方法的内容在2个MVC站点(称为SiteA和SiteB)上进行基本单点登录: http://forums.asp.net/p/1023838/2614630.aspx 它们位于同一域的子域中,并在web.config中共享hash \ encryption键等。 我已经修改了cookie,因此可以访问同一域中的所有站点。 所有这一切似乎都运作正常。 这些站点位于不同的服务器上,无法访问同一个SQL数据库,因此只有SiteA实际上拥有用户登录详细信息。 SiteB有一个成员资格数据库,但用户空白。 这适用于我所需的场景,即: 1)用户登录SiteA 2)应用程序从SiteA(通过AJAX)和SiteB(通过AJAX使用JSONP)加载数据 我在SiteA的AccountController上有以下LogOn Action,这是“魔术”发生的地方: [HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (MembershipService.ValidateUser(model.UserName, model.Password)) { FormsService.SignIn(model.UserName, model.RememberMe); //modify the Domain attribute of the cookie to the second level of domain // Add roles string[] roles = Roles.GetRolesForUser(model.UserName); HttpCookie cookie = FormsAuthentication.GetAuthCookie(User.Identity.Name, […]

在ASP.NET中的IdentityUserRole 2.0中获取角色名称

在更新entity framework中的dll之前,我能够做到这一点 user.Roles.Where(r => r.Role.Name == “Admin”).FisrtOrDefault(); 现在,我只能做r.RoleId,我找不到一种方法来检索thar Role Id的名字。 我在我的控制器和AuthorizeAttribute类中使用它。 有人可以帮我吗? 问候

ASP.NET MVC角色和安全性

假设这是我的SampleController动作方法 public ActionResult AdminView() { return View() } 如果要登录的用户属于admin角色,则需要调用此控制器方法,否则应该阻止此方法调用,并且用户应该获得一些自定义的未经授权的访问错误页面。 在我的asp .net mvc Web应用程序中,当用户登录时,我将用户角色作为字符串存储在会话中。 每当需要validation用户角色时,我会将会话中存储的值与常量“ADMIN_ROLE”进行比较。 但是我正在编写这段代码来检查几乎每个控制器操作方法中的用户角色,然后为用户返回适当的视图,或者如果用户角色限制为控制器操作方法,则返回未授权的访问页面视图。 我用谷歌搜索并读到我们可以使用这样的东西。 [Authorize(Roles=”admin”)] public ActionResult AdminView() { return View() } 但我不确定Authorize和Roles关键字的工作原理。 如果角色与为操作方法标记的角色不匹配,那么在设置Roles =“Admin”时,如何帮助检查存储在会话中的用户角色字符串,或者如何将用户重定向到未授权的页面。

MVC 5 – 角色 – IsUserInRole和添加用户角色

在MVC4中,我使用Roles.IsUserInRole来检查给定用户是否处于某个角色。 然而,有了MVC5,我不能再这样做了…… 起初,它要求我在web.config上启用RoleManager,但后来我发现microsoft从Web.Security转移到了Microsoft.AspNet.Identity。 我现在的问题是,使用Microsoft.AspNet.Identity如何执行类似于Roles.IsUserInRole的操作? 和/或在角色和用户之间创建关系。 顺便说一下,我还在尝试理解新的身份validation方法(ClaimsIdentity?)。