ASP.NET MVC global.asax中的放弃会话

时间:2018-04-27 18:32:21

标签: .net asp.net-mvc single-sign-on forms-authentication global-asax

我在这里陷入两难境地。我已经通过不同的ASP.Net MVC 5项目实现了SSO登录,一切都可以正常使用身份和表单身份验证。但我有一个要求。如果用户在他不会自动登录之前从未输入应用程序,则必须单击登录并订阅该应用程序。因此,对于从未进入过应用程序的用户来说,它必须看起来就像一个没有登录的用户。我希望我能清楚这一点。

我在应用和表单身份验证之间使用通用计算机密钥来生成故障单。

所以,我在方法Application_PostAuthenticateRequestApplication_AcquireRequestState中在Global.asax中进行验证,以查看当前登录用户是否先前已订阅该应用程序,如果有,则没有任何反应,他通常以登录用户身份登录。但如果他没有订阅,它必须放弃会话。

我尝试使用FormsAuthentication.SignOut(),但是这个会破坏cookie并删除它的sso方面。并Session.Abandon()无所作为。所以,我的问题是如何在不删除cookie的情况下放弃会话或当前的formauthentication,因此如果他访问他订阅的任何其他应用程序,他就不会有任何问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,我不得不更改FormsAuthentication Cookie的名称,并在每次要添加自定义验证时验证它是否与其他名称一起存在,然后使用FormsAuthentication.signOut()并进行asigning Current.User是一个普通的空用户。