首页 > 解决方案 > 在 ASP.NET MVC global.asax 中放弃会话

问题描述

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

我在应用程序和表单身份验证之间使用通用机器密钥来生成票证。

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

我试过使用,FormsAuthentication.SignOut()但是这个会破坏 cookie 并删除它的 sso 方面。并且Session.Abandon()什么都不做。所以,我的问题是如何在不删除 cookie 的情况下放弃会话或当前表单身份验证,所以如果他访问他订阅的任何其他应用程序,他不会有任何问题。

谢谢你。

标签: .netasp.net-mvcsingle-sign-onforms-authenticationglobal-asax

解决方案


我找到了一种方法,每次我想添加自定义验证时,我都必须更改 FormsAuthentication Cookie 的名称并验证它是否与其他名称一起存在,然后使用 FormsAuthentication.signOut() 并分配 Current。 User 一个通用的空用户。


推荐阅读