在课堂上我得到了像
这样的用户public static GetUserById_Result GetUser(string userId)
{
GetUserById_Result user = new GetUserById_Result();
try
{
using (EF.SSMA oContext = new EF.SSMA())
{
user = oContext.GetUserById(userId).FirstOrDefault();
}
}
catch (Exception)
{
throw;
}
return user;
}
所以它运行正常。但在同一个类中,我想将用户值访问另一个方法
public static List<GetUsers_Result> SelectAll()
{
List<GetUsers_Result> lstResult = new List<GetUsers_Result>();
try
{
using (EF.SSMA oContext = new EF.SSMA())
{
lstResult = oContext.GetUsers().Where().ToList();
}
}
catch (Exception ex)
{
throw ex;
}
return lstResult;
}
我需要做些什么呢?进入控制器非常简单我只是这样做:
var users = User.Identity.GetUserId();
GetUserById_Result currentUser = UserClass.GetUser(users);
var role = currentUser.BranchOfficeId;
但是如何在同一个班级中访问它&#39;我尝试用
调用GetUserId System.Web.HttpContext.Current.User.Identity.GetUserId();
但它只是用红色标记HttpContext并说&#34;无法解析符号&#39; HttpContext&#39;&#34;
我的目标是只调用BranchOfficeId = user.BranchOfficeId
的用户非常感谢帮助。此致
答案 0 :(得分:0)
如果我理解您的问题,请确保您已安装包Microsoft.Owin.Host.SystemWeb
并添加using System.Web
,然后使用directely User.Identity.GetUserId()
答案 1 :(得分:0)
您可以在控制器中执行此操作的原因是Controller
具有HttpContext
属性,该属性是使用当前请求的详细信息创建的,包括当前用户的身份。
如果要从其他类访问用户,则需要将用户作为参数传递给方法。举个例子:
using System.Security.Principal;
public class SomeClass
{
public void SomeMethod(IPrincipal user)
{
// Whatever you need
}
}
然后在你的控制器中:
var someClass = new SomeClass();
someClass.SomeMethod(HttpContext.User);
但是,如果您只对用户名称感兴趣,那么您实际上只需传递一个字符串:
public class SomeClass
{
public void SomeMethod(string username)
{
// Whatever you need
}
}
然后在你的控制器中:
var someClass = new SomeClass();
someClass.SomeMethod(HttpContext.User.Identity.Name);