asp.net-mvc-4 – 具有自定义角色的MVC 4 Intranet身份验证
发布时间:2020-12-15 23:24:20 所属栏目:asp.Net 来源:网络整理
导读:我花了一些时间搜索,发现了很多令人困惑的答案,所以我会在这里发布澄清. 我使用MVC4 VS2012创建了使用域身份验证的Intranet站点.一切都奏效但是,为了管理可以访问此webapp的不同区域的用户,我不喜欢使用我无法管理的AD组,也不能使用webapp的用户. 有办法吗我
我花了一些时间搜索,发现了很多令人困惑的答案,所以我会在这里发布澄清.
我使用MVC4 VS2012创建了使用域身份验证的Intranet站点.一切都奏效但是,为了管理可以访问此webapp的不同区域的用户,我不喜欢使用我无法管理的AD组,也不能使用webapp的用户. 有办法吗我认为这将涉及关联/存储属于自定义角色的域名,并使用Authorize属性来控制访问. [Authorize(Roles = "Managers")] 任何人都可以提出最好的模式,还是指向正确的方向? 我看到一个类似的解决方案link,但我仍然不知道如何使用这个对存储的角色列表,并验证用户对这些角色.任何人都可以详细说明这个解决方案是否可行? protected void Application_AuthenticateRequest(object sender,EventArgs args) { if (HttpContext.Current != null) { String[] roles = GetRolesFromSomeDataTable(HttpContext.Current.User.Identity.Name); GenericPrincipal principal = new GenericPrincipal(HttpContext.Current.User.Identity,roles); Thread.CurrentPrincipal = HttpContext.Current.User = principal; } } 解决方法
我正在使用SQL Server和MVC3配置.
Web.config文件: <system.web> <roleManager enabled="true" defaultProvider="SqlRoleManager"> <providers> <clear /> <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlRoleManagerConnection" applicationName="YourAppName" /> </providers> </roleManager> …. <authentication mode="Windows" /> …. <connectionStrings> <add name="SqlRoleManagerConnection" connectionString="Data Source=YourDBServer;Initial Catalog=AppServices;Integrated Security=True;" providerName=".NET Framework Data Provider for OLE DB" /> </connectionStrings> 表达角色: 的Global.asax.cs using System.Web.Security; //// protected void Application_Start() { //You could run this code one time and then manage the rest in your application. // For example: // Roles.CreateRole("Administrator"); // Roles.AddUserToRole("YourDomainAdminUser","Administrator"); Roles.CreateRole("CustomRole"); Roles.AddUserToRole("YourDomainDomainUser","CustomRole"); } 在你的控制器 [Authorize(Roles ="CustomRole")] public class HomeController : Controller { 管理用户 public class Usuario { public string UserName { get; set; } public string RoleName { get; set; } public string Name { get; set; } public const string Domain = "YourDomain"; public void Delete() { Roles.RemoveUserFromRole(this.UserName,this.RoleName); } public void Save() { if (Roles.IsUserInRole(Usuario.Domain + this.UserName,this.RoleName) == false) { Roles.AddUserToRole(Usuario.Domain + this.UserName,this.RoleName); } } } 用户类 public class Usuarios : List<Usuario> { public void GetUsuarios() //Get application's users { if (Roles.RoleExists("CustomRole")) { foreach (string _usuario in Roles.GetUsersInRole("CustomRole")) { var usuario = new Usuario(); usuario.UserName = _usuario; usuario.RoleName = "CustomRole"; this.Add(usuario); } } // public void GetUsuariosRed() //Get Network Users (AD) { var domainContext = new PrincipalContext(ContextType.Domain); var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext,IdentityType.SamAccountName,"Domain Users"); foreach (var item in groupPrincipal.Members) { var usuario = new Usuario(); usuario.UserName = item.SamAccountName; usuario.Name = item.Name; this.Add(usuario); } } 您可以创建一个“Admin”控制器来管理用户: [Authorize(Roles = "AdminCustomRole")] public class AdminController : Controller { // public ActionResult Index() { var Usuarios = new Usuarios(); Usuarios.GetUsuarios(); return View(Usuarios); } [HttpGet] public ActionResult CreateUser() { var Usuarios = new Usuarios(); Usuarios.GetUsuariosRed(); return View(Usuarios); } // 在我的应用程序中,自定义角色已修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在ASP.NET页面上显示XML
- asp.net-web-api – 为什么Microsoft.Owin.Host.SystemWeb无
- asp.net – 如何从Controller设置@ Html.ActionLink的动态标
- asp.net – 我应该使用哪个PreApplicationStartMethod?
- asp.net – 如何验证文件上传的文件类型?
- 如何配置asp.net与.net 4.5
- 如何将我的模型数据(列表)映射到另一个viewmodel数据(列表)
- 如何在服务器端缓存ASP.NET自定义HttpHandler响应
- .net – WebApi OData实体集/密钥/导航/密钥支持
- asp.net-mvc-3 – 不支持使用相同的DbCompiledModel来针对不
推荐文章
站长推荐
- asp.net-core – Asp.net vNext中的bindingRedir
- 如何在ASP.NET gridview的标题中放置一个按钮?
- asp.net-mvc – Mvc – 在会话中存储列表,然后检
- asp.net-web-api – 在Webapi中使用Url.Link与属
- entity-framework – 在MVC 5项目上使用ASP.NET
- asp.net-mvc – 我应该选择云吗?
- asp.net-mvc – MVC3将@model传递给局部视图
- asp.net-mvc – 是否可以使用RedirectToAction清
- asp.net – 我可以修改Request.Headers集合吗?
- asp.net-mvc – asp.net mvc强类型助手 – 你的渲
热点阅读