Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在.NET应用程序中替换表单身份验证的方法_Asp.net_Authentication_Forms Authentication_Iprincipal - Fatal编程技术网

Asp.net 在.NET应用程序中替换表单身份验证的方法

Asp.net 在.NET应用程序中替换表单身份验证的方法,asp.net,authentication,forms-authentication,iprincipal,Asp.net,Authentication,Forms Authentication,Iprincipal,我的问题是关于一种方法,我正在寻找帮助我开发解决方案的提示或链接。我有一个.NET4.0WebForms应用程序,它使用用户和密码的ASPNETDBSQL数据库进行表单身份验证。该应用程序的一个新功能是一种新的身份验证机制,使用单点登录允许数千名新用户访问。本质上,当用户通过新的单点登录方法登录时,我将能够将他们识别为具有角色的合法用户 因此,我将有类似于HttpContext.Current.Session[“已认证用户的电子邮件”](他们的身份)和HttpContext.Current.Se

我的问题是关于一种方法,我正在寻找帮助我开发解决方案的提示或链接。我有一个.NET4.0WebForms应用程序,它使用用户和密码的ASPNETDBSQL数据库进行表单身份验证。该应用程序的一个新功能是一种新的身份验证机制,使用单点登录允许数千名新用户访问。本质上,当用户通过新的单点登录方法登录时,我将能够将他们识别为具有角色的合法用户

因此,我将有类似于HttpContext.Current.Session[“已认证用户的电子邮件”](他们的身份)和HttpContext.Current.Session[“已认证用户的角色”](他们的角色)

重要的是,我不一定要在即将退役的aspnetdb数据库中冗余地维护这些用户和角色,但我确实希望使用上面的会话对象来允许用户通过应用程序,就像他们通过表单身份验证一样。我认为CustomRoleProviders或CustomMemberProviders没有帮助,因为它们不允许创建会话级用户

因此,我的问题是如何使用会话级用户和角色,我必须“模仿”所有形式,例如:

[System.Security.Permissions.PrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Role = "Student")]



谢谢你的指点。

我想你把
表单身份验证
SqlMembershipProvider
搞混了

表单身份验证是ASP.NET对用户进行一般性授权和身份验证的手段。它没有具体说明如何实现这一点。它只提供了一种方式,一旦通过身份验证,应用程序就可以通过保存为cookie的“票证”系统在整个应用程序中使用这些凭证

本质上,windows中只有两种身份验证:窗体身份验证和windows身份验证。由于您的新方法不是基于Windows的,因此您必须使用表单身份验证(除非您只是忽略asp.net中内置的内容,自己滚动所有内容,这有点愚蠢)


您可能想研究一下,因为它提供了一个可插入的身份体系结构,包括各种基于web的单点登录方法。

我认为您把
表单身份验证
SqlMembershipProvider
混淆了

表单身份验证是ASP.NET对用户进行一般性授权和身份验证的手段。它没有具体说明如何实现这一点。它只提供了一种方式,一旦通过身份验证,应用程序就可以通过保存为cookie的“票证”系统在整个应用程序中使用这些凭证

本质上,windows中只有两种身份验证:窗体身份验证和windows身份验证。由于您的新方法不是基于Windows的,因此您必须使用表单身份验证(除非您只是忽略asp.net中内置的内容,自己滚动所有内容,这有点愚蠢)


您可能需要研究,因为它提供了一个可插入的身份体系结构,包括各种基于web的单点登录方法。

当然,建议您继续使用使用Cookies的表单身份验证,因为它们可以在客户端来回传递用户信息。验证用户后,请使用FormsAuthentication.SetAuthCookie(…),然后使用FormsAuthentication.SignOut()再次清除它。我同意您的建议。保留表单身份验证…您正在寻找替换授权机制(即SqlMembershipProvider)当然,我们建议您继续使用使用cookie的表单身份验证,因为它们可以在客户端来回传递用户信息。验证用户后,请使用FormsAuthentication.SetAuthCookie(…),然后使用FormsAuthentication.SignOut()再次清除它。我同意您的建议。保留FormsAuthentication…您希望替换授权机制(即SqlMembershipProvider)
<authorization>
    <allow users="wilma, barney" />
</authorization>