【问题标题】:ASP.NET MVC 5 Identity 2.0, Windows Auth, User model with role attributeASP.NET MVC 5 Identity 2.0、Windows Auth、具有角色属性的用户模型
【发布时间】:2014-09-23 20:18:28
【问题描述】:

我正在尝试创建一个使用 Windows 身份验证但使用从用户模型中提取的角色的 MVC5 应用程序。

我已经到处搜索了一个例子,但我唯一能找到的都是基于旧的 ASP.NET 身份框架。

有人愿意为我指明正确的方向吗?!

谢谢!

【问题讨论】:

  • AD 角色还是 NTLM 和身份的网格?
  • 无 AD 角色,角色将严格定义在应用程序的用户模型中。
  • 你的意思是通过浏览器进行Windows身份验证??
  • 是的。通过浏览器进行 Windows 身份验证。

标签: asp.net-mvc asp.net-mvc-5 asp.net-identity


【解决方案1】:

所以我想出了解决这个问题的一种方法。我创建了一个自定义授权属性,用于检查用户模型中的角色。

using System.Linq;
using System.Web;
using System.Web.Mvc;
using App.Models;
using System.Security.Claims;

namespace App.Extensions.Attributes
{
    public class AuthorizeUser : AuthorizeAttribute
    {
        Context context = new Context();

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {

            if (httpContext == null) 
                return false;

            string login = ClaimsPrincipal.Current.Claims.ElementAt(1).Value.Split('@')[0];
            string[] roles = base.Roles.Split(',');
            User user = context.Users.FirstOrDefault(u => u.Login == login);

            if (user == null)
                return false;
            else if (base.Roles == "")
                return true;
            else
                return roles.Contains(user.Role.ToString());
        }
    }
}

想法?

【讨论】:

    猜你喜欢
    • 2016-10-24
    • 2015-02-01
    • 1970-01-01
    • 2014-09-16
    • 2013-12-26
    • 2013-11-10
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多