我正在使用 SignalR 处理来自我的 MVC3 应用程序上的客户端的点击。
每次用户单击某些内容时,我都需要验证已登录的用户。
如果这是在 MVC3 Controller 中,我会去:
if (User.Identity.IsAuthenticated)
{
string username = User.Identity.Name;
//My code here.
}
但是,此代码执行不在 Controller 类中。
基本上,如何从 Controller 外部访问登录的用户名?
最佳答案
Basically, how can I access the logged in users name from outside a controller?
这取决于您想从何处访问它们。如果您无权访问
HttpContext
您可以随时尝试 HttpContext.Current.User
并祈祷它不会因某种原因为空,例如不同的线程或其他原因。对于依赖于任务和大量异步处理的 SignalR,这尤其可能。如果它在 SignalR 的集线器内,您可以访问用户:public class Chat: Hub
{
public void Foo()
{
string username = Context.User.Identity.Name;
}
}
我个人不建议您使用
HttpContext.Current
.取决于您究竟想要实现什么以及我向您保证有更好的方法。
关于asp.net-mvc-3 - 如何从 Controller 外部访问登录用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289724/