Функция Request.IsAuthenticated в Asp.Net 5

Есть ли какой-либо эквивалент Request.IsAuthenticated в Asp.Net 5 где-то скрыт или мы должны прокручивать идентификаторы пользователей и сами определять это?

Ответ 1

Если вам просто нужно знать, прошел ли аутентификация объекта 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

Ответ 2

Вы также можете получить доступ к свойству IsAuthenticated из своего уровня сервиса, IHttpContextAccessor в него IHttpContextAccessor, как 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!
         }
    }
}