当前位置: 首页 > 面试题库 >

如何强制退出网站的所有用户?

娄森
2023-03-14
问题内容

我正在使用MySQL Connector / .NET,它的所有提供程序都带有FormsAuthentication。

我需要所有用户退出。该方法FormsAuthentication.SignOut()无法正常工作。

如何注销所有站点用户?


问题答案:

正如乔建议的那样,您可以编写一个HttpModule来使给定DateTime之前存在的任何cookie无效。如果将其放在配置文件中,则可以在必要时添加/删除它。例如,

Web.config:

<appSettings>
  <add key="forcedLogout" value="30-Mar-2011 5:00 pm" />
</appSettings>

<httpModules>
  <add name="LogoutModule" type="MyAssembly.Security.LogoutModule, MyAssembly"/>
</httpModules>

MyAssembly.dll中的HttpModule:

public class LogoutModule: IHttpModule
{
    #region IHttpModule Members
    void IHttpModule.Dispose() { }
    void IHttpModule.Init(HttpApplication context)
    {
        context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
    }
    #endregion


    /// <summary>
    /// Handle the authentication request and force logouts according to web.config
    /// </summary>
    /// <remarks>See "How To Implement IPrincipal" in MSDN</remarks>
    private void context_AuthenticateRequest(object sender, EventArgs e)
    {
        HttpApplication a = (HttpApplication)sender;
        HttpContext context = a.Context;

        // Extract the forms authentication cookie
        string cookieName = FormsAuthentication.FormsCookieName;
        HttpCookie authCookie = context.Request.Cookies[cookieName];
        DateTime? logoutTime = ConfigurationManager.AppSettings["forcedLogout"] as DateTime?;
        if (authCookie != null && logoutTime != null && authCookie.Expires < logoutTime.Value)
        {
            // Delete the auth cookie and let them start over.
            authCookie.Expires = DateTime.Now.AddDays(-1);
            context.Response.Cookies.Add(authCookie);
            context.Response.Redirect(FormsAuthentication.LoginUrl);
            context.Response.End();
        }
    }
}


 类似资料:
  • 问题内容: 我网站的合法用户有时会通过API请求对服务器进行锤击,从而导致不良结果。我想建立一个限制,即每5秒不超过一个API调用或每分钟不超过n个调用(尚未知道确切的限制)。显然,我可以将每个API调用记录在数据库中,并对每个请求进行计算,以查看它们是否超出限制,但是每个请求上的所有这些额外开销都无法达到目的。我可以使用哪些其他耗费资源较少的方法来建立限制?我正在使用PHP / Apache /

  • 问题内容: 我想在Windows Azure网站上运行,我想通过默认的* .azurewebsites.net证书使用ssl。它无需执行任何操作即可工作,但是http也可用于每个目的地,而不仅仅是https。如何强制从http重定向到https?通常我可以做类似的事情: 但由于我对* .azurewebsites.net证书一无所知,例如其路径,因此无法正常工作。 如何将全部或部分请求重定向到ht

  • 我已将LDAP导入的用户组映射到站点角色(因为Liferay 6.1不可能将它们映射到组织角色)。 例如,我已经将用户组my_site管理员映射到站点my_site的站点角色站点管理员。 如何让网站角色的所有用户也考虑到用户组成员身份? 我尝试了以下代码,但没有成功。

  • 我正在做一个需要安全连接的项目。 我可以设置的路线,uri,资产使用'https'通过: 但一直设置参数似乎很累。 有没有办法强制所有路由生成HTTPS链接?

  • 问题内容: 我正在将URL加载到Webview中以将其显示在我的应用中。我遇到的问题是,网站并非总是能识别出我是手机(为什么如此?)。如何强制Webview发送到我的手机网站?目前我正在那样做 但这行不通吗?因为我没有使用iPhone,所以行不通吗?我不认为这是原因,因为它只是设置用户代理… 这是相关的代码(不相关的代码仅包含诸如从意图中获取url和格式化字符串等数据) 我还为用户代理尝试了此字符

  • 问题内容: 我想知道当用户单击注销时是否可以删除网站的所有cookie,因为我将其用作删除cookie的功能,但无法正常工作: 有没有一种方法可以删除PHP中某个域的Cookie? 问题答案: PHP setcookie() 从该页面获取的信息将取消设置您域的所有cookie: http://www.php.net/manual/zh/function.setcookie.php#73484