c# - 使用 ASP.NET MVC 和 C# 启用具有多个代码的同一用户
问题描述
我使用 ASP.NET MVC 和 C# 创建了我的第一个应用程序。
在controller.cs
我使用如下所示的代码来识别用户 ( tUser
) 是否已在数据库表中注册tUser
- 与否。
如果用户存在于表中,tUser
我设置会话。
如果注册的用户只关联了一个代码 ( ),我没有问题tCode
,例如
+-----------------+--------+
| tUser | tCode |
+-----------------+--------+
| DOMAIN\Edward | D11SU1 |
+-----------------+--------+
但是如何管理启用了多个代码的用户?
例如
+-----------------+--------+
| tUser | tCode |
+-----------------+--------+
| DOMAIN\Edward | D11SU1 |
| DOMAIN\Edward | D11SU2 |
+-----------------+--------+
我稍后根据启用代码使用此信息填充下拉列表。我将使用带有 WHERE 条件的查询,例如
SELECT * FROM mytable WHERE tCode IN ('D11SU1','D11SU2')
那可能吗?
这是我的代码:
private void recognizeuser()
{
try
{
string cs = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
using (var connection = new MySqlConnection(cs))
{
string commandText = " SELECT `tUser`, `tCode` FROM `tUser` " +
" WHERE `tUser` = @Username; ";
using (var command = new MySqlCommand(commandText, connection))
{
if (!String.IsNullOrEmpty(HttpContext.User.Identity.Name.ToString()))
{
command.Parameters.AddWithValue("@Username", HttpContext.User.Identity.Name.ToString());
}
connection.Open();
string tUser = string.Empty;
string tCode = string.Empty;
using (MySqlDataReader reader = command.ExecuteReader())
{
reader.Read();
tUser = reader["tUser"].ToString();
tCode = reader["tCode"].ToString();
System.Web.HttpContext.Current.Session["tUser"] = tUser.ToString();
System.Web.HttpContext.Current.Session["tCode"] = tCode.ToString();
System.Web.HttpContext.Current.Session.Timeout = 28800;
}
if (String.IsNullOrEmpty(userName))
{
ViewBag.Message = String.Format("No user!");
}
connection.Close();
}
}
}
catch (Exception ex)
{
TempData["Message"] = "Login failed.Error - " + ex.Message;
}
}
解决方案
我不知道您以后如何使用此信息,但简单的解决方法可能是:
using (MySqlDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
if(String.IsNullOrEmpty(tUser))
{
tUser = reader["tUser"].ToString();
tCode += $";{reader["tCode"].ToString()}";
}
else
{
tCode += $";{reader["tCode"].ToString()}";
}
}
System.Web.HttpContext.Current.Session["tUser"] = tUser.ToString();
System.Web.HttpContext.Current.Session["tCode"] = tCode.ToString();
System.Web.HttpContext.Current.Session.Timeout = 28800;
}
您的tCode
遗嘱如下所示:D11SU1;D11SU2
,因此您可以稍后将其拆分。
推荐阅读
- google-apps-script - 验证脚本问题
- php - Laravel 存储复制不起作用,如何使用存储磁盘复制文件
- vue.js - Vue js在mounted()钩子中加载js文件
- c# - 在 Unity 中使用 ThirdPersonController 的可能性不是用户控制的吗?
- docker - 容器环境中的 Kafka FQDN
- java - Spring boot Pageable - 动态 nativeQuery 。排序过滤器不起作用。(属性未转换为列名)
- java - 从 firebase 数据库填充 listview 数据
- arrays - 嵌套在 JSON 中的 Swift 4.x 可编码数组对象
- wpf - WPF MVVM数据网格在另一个更改时更新属性
- vba - Excel VBA 变量未正确递增