在Asp.Net 5中的Request.IsAuthenticated功能

时间:2015-06-03 23:48:38

标签: asp.net-core

是否存在隐藏在某处的Asp.Net 5中的Request.IsAuthenticated等价物,或者我们是否希望循环使用用户的身份并自行确定?

2 个答案:

答案 0 :(得分:29)

如果您只需要知道User对象是否经过身份验证,那么此属性应该可以解决问题:

User.Identity.IsAuthenticated

如果您需要阻止未经身份验证的用户调用某个操作,则以下属性类效果很好。

public class BasicAuthAttribute : ActionFilterAttribute, IAuthenticationFilter
{
    public void OnAuthentication(AuthenticationContext filterContext)
    {
    }

    public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    {
        var user = filterContext.HttpContext.User;
        if (user == null || !user.Identity.IsAuthenticated)
        {
            filterContext.Result = new HttpUnauthorizedResult();
        }
    }
}

我在我的基本控制器类中使用它如下。

[BasicAuth]
public abstract class BaseAuthorizedController : Controller

答案 1 :(得分:0)

您还可以通过将IsAuthenticated注入到服务层中来访问IHttpContextAccessor属性,如下所示:

public class MyService : IMyService {
    private readonly IHttpContextAccessor httpContextAccesor;

    public MyService(IHttpContextAccessor httpContextAccessor) {
        this.httpContextAccessor = httpContextAccessor;
    }

    public void MyMethod() {

         var isAuthenticated = this.httpContextAccessor.HttpContext.User.Identity.IsAuthenticated;

         if (isAuthenticated) {
             // Authenticated, do something!
         }
    }
}