用户通过身份验证后触发功能的最佳方式
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 对用户进行身份验证的最佳方式(接受其他建议)?