Ger*_*ois 3 asp.net authentication forms-authentication asp.net-1.1
我有一个主要的asp.net应用程序,它是用asp.net 1.1编写的.在应用程序下面运行的是几个2.0应用程序.要完全注销用户,我可以使用FormsAuthentication.SignOut注销1.1应用程序,还是比这更复杂?
您要做的是称为单点登录和单点登录.根据您设置应用程序的方式存在差异.我将尝试澄清这些差异发挥作用的地方.
要实现单点登录和单点登录,您需要在所有应用程序之间使cookie名称,保护和路径属性相同.
<authentication mode="Forms">
<forms name=".cookiename"
loginUrl="~/Login.aspx"
timeout="30"
path="/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
接下来,您需要添加机器密钥,并且它们在所有应用程序之间必须相同.
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902"
encryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"
validation="SHA1" />
Run Code Online (Sandbox Code Playgroud)
您是否在应用程序中使用二级或三级域名?如果是这样,您需要通过将域添加到cookie中来执行更多操作:
protected void Login(string userName, string password)
{
System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
cookie.Domain = "domain1.com";
cookie.Expires = DateTime.Now.AddDays(30);
Response.AppendCookie(cookie);
}
Run Code Online (Sandbox Code Playgroud)
现在要进行单点注销,调用FormsAuthentication.SignOut可能还不够.下一个最好的事情是将cookie过期设置为过去的日期.这将确保cookie不会再次用于身份验证.
protected void Logout(string userName)
{
System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
cookie.Domain = "domain1.com";
cookie.Expires = DateTime.Now.AddDays(-1);
Response.AppendCookie(cookie);
}
Run Code Online (Sandbox Code Playgroud)
我考虑到您正在为所有应用程序使用相同的数据库.如果应用程序使用单独的数据库进行注册和身份验证,那么我们还需要做更多的工作.如果是这种情况,请告诉我.否则这应该适合你.
| 归档时间: |
|
| 查看次数: |
2868 次 |
| 最近记录: |