Pok*_*oku 4 asp.net-mvc httpcontext
我真的迷失了如何使用HttpContext.User.我到处都读到了FormAutherication的优点,但我不知道它是如何工作的.如果我做这样的事情:
ControllerContext.HttpContext.User = new GenericPrincipal(GetUser(username, password), roles);
Run Code Online (Sandbox Code Playgroud)
ControllerContext.HttpContext.User包含什么?以及如何通过这种方式访问用户信息?
我认为我有这样的行动:
public User GetUser(string username, string password)
{
try
{
var user = (from u in dm.Users
join r in dm.Roles
on u.Role_ID_FK equals r.RoleID
where u.Username.Equals(username) && u.Password.Equals(password)
select u).Single();
return user;
}
catch (Exception e)
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
然后如果我想在我的视图中使用用户信息,比如用户名或角色,我可以在我的视图中调用ControllerContext.HttpContext.User.Username.但这看起来是错误的方式.
那么你们可以给我一个方向,或者发布一个链接到一个可以的网站吗?
我不确定你要用你发布的代码做什么,但这里有一些HttpContext.User的帮助.通俗地说,它表示当前用户请求特定页面,实际上在您的控制器中,您可以将其引用为没有前缀的"用户".
User.Identity会告诉您用户是否经过身份验证,如果是,他们的用户名以及他们如何进行身份验证(表单或Windows).
它通常用于获取请求页面的用户的用户名,以便您的控制器操作可以执行正确的职责.就像是:
public ActionResult Index()
{
//you should probably use the [Authorize] attribute on the Action Method
//but you could check for yourself whether the user is authenticated...
if (!User.Identity.IsAuthenticated)
return RedirectToAction("LogIn");
MyUser u = repository.GetUser(User.Identity.Name); //lookup user by username
ViewData["fullname"] = u.FullName; //whatever...
return View();
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,如果用户尚未经过身份验证,则会将其重定向到LogOn页面,如果已经过,则Action方法正在使用User.Identity.Name(这是他们登录的用户名,或者他们的Windows登录)从数据库中查找并返回MyUser对象的实例,并将用户的全名放在ViewData中进行显示.
| 归档时间: |
|
| 查看次数: |
16856 次 |
| 最近记录: |