asp.net-mvc-3 - 如何从 Controller 外部访问登录用户?

标签 asp.net-mvc-3 authorization signalr

我正在使用 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/

相关文章:

web-services - 面向服务架构中的集中身份验证

c# - 信号器用户从未显示经过身份验证

SignalR IAssemblyLocator 覆盖未触发

c# - ActionResultFilter 页面未找到错误

c# - MVC 3 Razor 模型未更新 : 'Model' does not contain a definition for 'PropertyName'

Paypal 错误 10002 : Authentication/Authorization Failed

asp.net - 当客户端cookie滑动时刷新IdentityServer cookie

asp.net-mvc-4 - 自定义 header 和 Signalr : Asp.Net MVC4 Web Api

asp.net-mvc-3 - 如何减少对 Controller 的注入(inject)依赖项的数量

asp.net-mvc-3 - 有没有办法使用字符串键访问 .NET MVC ViewBag 的属性?