当前位置:  开发笔记 > 后端 > 正文

ASP.NET成员资格密码到期

如何解决《ASP.NET成员资格密码到期》经验,为你挑选了4个好方法。

我使用ASP.NET成员资格来验证我的Web应用程序.这对我很有用.我现在必须实现密码到期.

如果密码已过期,则应将用户重定向到ChangePassword屏幕,并且不允许在不更改密码的情况下访问应用程序的任何其他部分.

有很多aspx页面.如果密码已过期,一种解决方案可能是重定向到每个aspx 的ChangePassword屏幕OnInit.有没有其他解决方案或建议.

谢谢,Jai



1> Andrew..:

继csgero的回答之后,我发现您不需要在ASP.Net 2.0(3.5)中为此事件显式添加事件处理程序.

您可以简单地创建以下方法,global.asax并为您连接:

void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
    if (this.User.Identity.IsAuthenticated)
    {
        // get user
        MembershipUser user = Membership.GetUser();

        // has their password expired?
        if (user != null
            && user.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date
            && !Request.Path.EndsWith("/Account/ChangePassword.aspx"))
        {
            Server.Transfer("~/ChangePassword.aspx");
        }
    }
}



2> csgero..:

您可以在global.asax中为HttpApplication.PostAuthenticateRequest事件添加事件处理程序,并在那里处理重定向.


这就是我要做的,结合使用成员资格提供程序的LastPasswordChangedDate属性来确定它何时到期.

3> rethenhouser..:

继安德鲁回答之后,我发现你需要检查用户是否已经在更改密码页面上,否则他们将无法真正更改密码,因此永远不会离开更改密码网站:

void Application_PostAuthenticateRequest(object sender, EventArgs e)
    {
        if (this.User.Identity.IsAuthenticated)
        {
            // get user 
            MembershipUser user = Membership.GetUser();

            // has their password expired? 
            if (user != null
                && user.LastPasswordChangedDate.AddMinutes(30) < DateTime.Now
                && !Request.Path.EndsWith("/Account/ChangePassword.aspx"))
            {
                Server.Transfer("~/Account/ChangePassword.aspx");
            }
        }
    } 



4> 小智..:

只需在大约一个小时内完成此操作,无需修改基页.你需要做什么:

    回应LoggingIn会员控制事件

    在成员资格数据库中找到用户并获取 LastPasswordChangedDate

    使用TimeSpan,将其与当前日期进行比较,并确定密码的最后更改时间是否超过必需的天数.我从web.config获取此值

    如果已过期,请重定向到ChangePassword屏幕

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有