其他分享
首页 > 其他分享> > 我可以在自定义MembershipProvider中向用户会话添加一些内容吗?

我可以在自定义MembershipProvider中向用户会话添加一些内容吗?

作者:互联网

我正在实现一个自定义MembershipProvider,以便将登录详细信息传递给我们在公司其他几个地方使用的自定义业务对象.但是,一旦我们通过了身份验证,我想将这个初始化的业务对象保存在会话中,以供以后在其他页面中使用.让我举个例子吧.

public override bool ValidateUser(string username,string password)
{
    try
    {
        // I want to keep this "object" in the Session to be used later on
        CustomBusinessObject object = new CustomBusinessObject(username, password);

        return true;
    }
    catch (CustomBusinessAuthenticationException)
    {
        return false;
    }
}

我有办法吗?我没有立即看到一种通过实现此自定义MembershipProvider来访问Session对象的方法.

解决方法:

您可以通过调用System.Web.HttpContext.Current来访问会话.只需在自定义成员资格提供程序上创建一个自定义属性,该属性将检查HttpContext.Current是否为null,如果为null,则返回null,否则相应地访问会话值.

public object CustomObject
{
    get
    {
        if(System.Web.HttpContext.Current == null)
        {
            return null;
        }
        return System.Web.HttpContext.Current.Session["CustomObject"];
    }
    set
    {
        if(System.Web.HttpContext.Current != null)
        {
            System.Web.HttpContext.Current.Session["CustomObject"] = value;
        }
    }
}

标签:asp-net,asp-net-membership,c
来源: https://codeday.me/bug/20191210/2102843.html