配置不带Web的表单身份验证.配置

本文关键字:配置 表单 身份验证 Web | 更新日期: 2023-09-27 18:26:46

场景


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

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

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

问题


有没有一种方法可以让我通过代码做到这一点?我只通过web.config看到过它的实现?

我想从数据库中读取设置,并将其应用于Global.asax->OnApplicationStart()

配置不带Web的表单身份验证.配置

看看WebActivatorEx。这里有一个关于其功能的好博客。要配置FormsAuthentication,您甚至必须在应用程序启动之前执行配置方法。WebActivatorEx将为您处理此问题。如果不想使用第三方程序包,可以在AssemblyInfo.cs类中指定此[assembly:PreApplicationStartMethod(typeof(AppConfig),"Configure")]。这里有另一个关于它的参考点。

[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);
    }
}