Есть ли какой-либо эквивалент 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!
}
}
}