【问题标题】:Configure Forms Authentication Without Web.Config在没有 Web.Config 的情况下配置表单身份验证
【发布时间】:2014-10-16 07:10:26
【问题描述】:

场景


我已将 MVC 应用程序配置为以传统方式使用 Forms 身份验证。

<authentication mode="Forms">
  <forms cookieless="UseCookies" slidingExpiration="true" timeout="1">
  </forms>
</authentication>

但是,我允许客户选择他的 Web 应用程序如何进行身份验证(URL 令牌/Cookie),以及他的应用程序会话在到期之前应该持续多长时间(超时)

问题


我有办法通过代码做到这一点吗?我只通过 web.config 看到了这个实现?

我想从数据库中读取设置并将它们应用到 Global.asax -> OnApplicationStart()

【问题讨论】:

标签: c# asp.net-mvc web-config forms-authentication global-asax


【解决方案1】:

看看WebActivatorEx。这是一个很好的blog 关于它的功能。要配置 FormsAuthentication,您甚至必须在应用程序启动之前执行配置方法。 WebActivatorEx 将为您处理。如果您不想使用第三方包,您可以在 AssemblyInfo.cs 类中指定此 [assembly: PreApplicationStartMethod(typeof(AppConfig), "Configure")]Here's another point of reference that talks about it.

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(AppConfig), "Configure")]
public static class AppConfig
{
    public static void Configure()
    {
        var settings = new NameValueCollection();
        settings.Add("defaultUrl", "~/Account/Default.aspx");
        settings.Add("loginUrl", "~/Default.aspx");
        settings.Add("timeout", "10");
        FormsAuthentication.EnableFormsAuthentication(settings);
    }
}

【讨论】:

  • 即使我最终只是手动管理表单身份验证(无论如何都必须手动管理滑动到期,实际上仅此而已),我仍将奖励您赏金
  • 嗯,这个问题不是赏金问题,但我很感激。
  • 一个警告,我只是在几周后才发现这是按我的预期工作的:您只能以这种方式设置默认 url 和登录 url。这对我来说太奇怪了,但它忽略了我的路径和域,后来我了解到它似乎工作的唯一原因是因为我的应用程序从它上面的父应用程序继承了它的表单设置,而这些设置正是我想要的无论如何都要匹配共享的身份验证 cookie。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多