在用户通过身份验证后触发一次功能的最佳方法

时间:2014-05-09 11:07:39

标签: c# asp.net

当用户登录我的asp.net网站时,我有一个必须运行一次的程序。我能找到的最接近的事件是登录控件上的LoggedIn事件和Global.asax中的Session_Start,但我无法使用这些事件,因为他们还无法找到当前登录用户的UserId。

那么,在用户通过身份验证后运行一次过程的最佳方法是什么?

我用来调用程序的代码(maby可以改成不在这里使用userid吗?)

        if (User.Identity.IsAuthenticated)
    {
        SqlConnection conn;
        SqlCommand comm;

        string connectionString = ConfigurationManager.ConnectionStrings["LoginProject"].ConnectionString;
        conn = new SqlConnection(connectionString);
        string UserId = Membership.GetUser().ProviderUserKey.ToString();
        comm = new SqlCommand("TrackLoggedInUser", conn);
        comm.CommandType = CommandType.StoredProcedure;

        comm.Parameters.AddWithValue("@UserId", System.Data.SqlDbType.UniqueIdentifier);
        comm.Parameters["@UserId"].Value = UserId;
        comm.Parameters.AddWithValue("@UserLoginId", System.Data.SqlDbType.Int);

        try
        {
            conn.Open();
            comm.ExecuteNonQuery();
        }
        catch (Exception)
        {

        }
        finally
        {
            conn.Close();
        }
    }

1 个答案:

答案 0 :(得分:1)

此问题已经讨论过here

您只需提供GetUser()的用户名,如

Membership.GetUser(login1.Username).ProviderUserKey.ToString()