用户通过身份验证后触发功能的最佳方式

Posted

技术标签:

【中文标题】用户通过身份验证后触发功能的最佳方式【英文标题】:Best way to trigger a function once after a user is authenticated 【发布时间】:2014-05-09 11:07:38 【问题描述】:

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

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

我用来调用过程的代码(也许它可以被修改为在这里不使用用户ID?)

        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();
        
    

【问题讨论】:

你是使用内置的auth、AD还是其他方式? 是的,使用 Microsoft asp.net 默认数据库构建登录控件。 如果您使用表单身份验证,您可以检查用户是否已通过身份验证并从那里采取措施:msdn.microsoft.com/en-us/library/vstudio/… 也许this answer 有帮助。 哇,这确实有效。我所要做的就是更改字符串 UserId = Membership.GetUser(login1.Username).ProviderUserKey.ToString();也许你可以从中做出答案,并为其他人验证它。 【参考方案1】:

这个问题已经在here讨论过。

您所要做的就是向GetUser() 提供用户名

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

【讨论】:

以上是关于用户通过身份验证后触发功能的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQL 对用户进行身份验证的最佳方式(接受其他建议)?

对 Web 服务进行身份验证的最佳方式是啥

处理 Firebase 身份验证和数据库实时之间事务的最佳方式

JSF 2.0 上用户身份验证的最佳实践?

JSF 2.0 上用户身份验证的最佳实践?

ios身份验证的最佳做法和教程