【问题标题】:One application serves multiple sites, how to design forms-auth cookie?一个应用服务多个站点,如何设计forms-auth cookie?
【发布时间】:2013-01-05 09:32:55
【问题描述】:

我的应用程序将服务于多个站点,我将为系统中的所有站点定义相同的主目录。假设这是一个包含用户、角色等的业务应用程序,并且每个站点都面向另一个客户。

角色定义在数据库中,所以我正在创建一个带有票证的表单身份验证 cookie,并将该 cookie 命名为

FormsAuthentication.FormsCookieName + HttpContext.Current.Session["ApplicationName"] 

但是当我尝试在 Application_AuthenticateRequest 中解码此 cookie 时,应用程序会抛出一个错误,指出会话状态尚未准备好。

我可以用另一种方式存储“ApplicationName”数据。但我有一种感觉,我可能从一开始就做错了什么。

你能建议我在这个场景中的模式或其他东西吗?

【问题讨论】:

    标签: c# asp.net forms-authentication asp.net-roles


    【解决方案1】:

    您将无法在 ASP.NET 生命周期 (Application_AuthenticateRequest) 的那个阶段使用会话状态。它尚不可用。

    应该在 AcquireRequestState 步骤可用。这就是获取当前请求的会话状态的时间。

    在这里查看生命周期事件:

    http://www.devproconnections.com/article/aspnet2/understanding-the-asp-net-lifecycle-123441

    【讨论】:

    • AcquireRequestState 来不及对用户进行身份验证。 Asp.net 运行时在 Application_AuthenticateRequest 事件之后将重定向标头添加到登录页面。而且我无法在 AcquireRequestState 上删除它。
    猜你喜欢
    • 2011-04-27
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2013-07-03
    • 2014-07-28
    • 2015-06-21
    相关资源
    最近更新 更多