如何使用mvc将基于user_ID的user_name从登录页面传递到主页
How to pass user_name based on the user_ID from login page to home page using mvc
当我登录我的登录页面时,它会转到主页,我的 user name
它工作正常,我希望 userID
基于我的 user_name
从登录到主页
<section id="login">
@if (Request.IsAuthenticated)
{
<text>
<button class="dropdown-toggle" id="dd-user-menu" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="~/img/avatar-2-64.png" alt="">
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dd-user-menu">
<a class="dropdown-item"><span class="font-icon glyphicon glyphicon-user"></span>Hello, @User.Identity.Name</a>
<a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-cog"></span>Settings</a>
<a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-question-sign"></span>Help</a>
<div class="dropdown-divider"></div>
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a class="dropdown-item" href="javascript:document.getElementById('logoutForm').submit()"><span class="font-icon glyphicon glyphicon-log-out"></span>Logout</a>
}
</div>
</text>
}
</section>
但是在我上面的代码中我得到 user_name
所以我也想得到 user_id
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(Login login)
{
if (ModelState.IsValid)
{
bool success = WebSecurity.Login(login.UserName, login.Password, false);
var UserID = GetUserID_By_UserName(login.UserName);
var DocID = GetDocID_By_UserName(login.UserName);
if (success == true)
{
Session["Name"] = login.UserName;
Session["UserID"] = UserID;
Session["RefID"] = DocID;
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("Error", "Please enter valid Username and Password");
return View(login);
}
}
return View(login);
}
#endregion
in my above code i get user_name so i want to get user_id as well
您不能拨打 User.Identity.XXX
。您不能将自定义 属性 添加到原则 class。
但是,您可以在视图中调用 Session["UserID"]
,因为您已经将 UserID
存储在会话状态中。
例如,
<div>@Convert.ToInt32(Session["UserID"] ?? 0)</div>
当我登录我的登录页面时,它会转到主页,我的 user name
它工作正常,我希望 userID
基于我的 user_name
从登录到主页
<section id="login">
@if (Request.IsAuthenticated)
{
<text>
<button class="dropdown-toggle" id="dd-user-menu" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="~/img/avatar-2-64.png" alt="">
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dd-user-menu">
<a class="dropdown-item"><span class="font-icon glyphicon glyphicon-user"></span>Hello, @User.Identity.Name</a>
<a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-cog"></span>Settings</a>
<a class="dropdown-item" href="#"><span class="font-icon glyphicon glyphicon-question-sign"></span>Help</a>
<div class="dropdown-divider"></div>
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a class="dropdown-item" href="javascript:document.getElementById('logoutForm').submit()"><span class="font-icon glyphicon glyphicon-log-out"></span>Logout</a>
}
</div>
</text>
}
</section>
但是在我上面的代码中我得到 user_name
所以我也想得到 user_id
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(Login login)
{
if (ModelState.IsValid)
{
bool success = WebSecurity.Login(login.UserName, login.Password, false);
var UserID = GetUserID_By_UserName(login.UserName);
var DocID = GetDocID_By_UserName(login.UserName);
if (success == true)
{
Session["Name"] = login.UserName;
Session["UserID"] = UserID;
Session["RefID"] = DocID;
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("Error", "Please enter valid Username and Password");
return View(login);
}
}
return View(login);
}
#endregion
in my above code i get user_name so i want to get user_id as well
您不能拨打 User.Identity.XXX
。您不能将自定义 属性 添加到原则 class。
但是,您可以在视图中调用 Session["UserID"]
,因为您已经将 UserID
存储在会话状态中。
例如,
<div>@Convert.ToInt32(Session["UserID"] ?? 0)</div>