Asp.net mvc Windows身份验证&;SQL成员服务
我有一个ASP.NETMVC内部网站,它使用Windows身份验证来了解谁已登录(不允许任何浏览)。用户第一次访问时,我从他们那里收集了一些关于联系人对象(如姓名、电子邮件、国家)的基本信息,然后将这些信息存储在应用程序数据库中Asp.net mvc Windows身份验证&;SQL成员服务,asp.net-mvc,authentication,windows-authentication,sqlmembershipprovider,Asp.net Mvc,Authentication,Windows Authentication,Sqlmembershipprovider,我有一个ASP.NETMVC内部网站,它使用Windows身份验证来了解谁已登录(不允许任何浏览)。用户第一次访问时,我从他们那里收集了一些关于联系人对象(如姓名、电子邮件、国家)的基本信息,然后将这些信息存储在应用程序数据库中 我想使网站的角色为基础,所以我需要能够分配给每个用户一个角色(用户,管理员等)。我可以用广告群来做这件事,但这似乎相当重要。我是否可以使用ASP.Net提供的SQL成员资格服务来存储他们的用户名以及他们所属的角色,或者我是否会被强制收集密码等(不使用Windows身份验
我想使网站的角色为基础,所以我需要能够分配给每个用户一个角色(用户,管理员等)。我可以用广告群来做这件事,但这似乎相当重要。我是否可以使用ASP.Net提供的SQL成员资格服务来存储他们的用户名以及他们所属的角色,或者我是否会被强制收集密码等(不使用Windows身份验证)?这是否也与ASP.Net MVC[Authorize]属性集成?在“普通”ASP.Net中,您当然可以使用这种组合(Windows身份验证和角色SQL),因此MVC也应该可以使用 这是。是的,你可以这样做 授权使用IPrincipal的IsInRole方法确定用户是否在给定角色内 在Global.asax中的AuthenticateRequest事件期间,您可以使用自己处理此问题的实现切换出IPrincipal的默认实现 以下是一些示例代码,这些代码实际上可以运行和编译,不会使您的网站受到黑客的攻击:
private void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (!Request.IsAuthenticated)
{
Context.User = new MyPrincipal { Identity = new MyIdentity
{ Type = UserType.Inactive, Id = int.MinValue }};
Thread.CurrentPrincipal = Context.User;
}
else
{
HttpCookie authCookie = Request.Cookies[
FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket =
FormsAuthentication.Decrypt(authCookie.Value);
var identity = Db.GetIdentity(
authTicket.Name, new HttpRequestWrapper(Request));
Context.User = new MyPrincipal { Identity = new MyIdentity
{ Type = UserType.Inactive, Id = int.MinValue }};
Thread.CurrentPrincipal = Context.User;
}
}
}
谢谢威尔,我要试一试!