我的api需要由Angular应用程序中经过身份验证和未经身份验证的用户调用。显然,添加[Authorize]属性会自动发送带有以下标头的401状态代码,并强制进行挑战:
^
我不希望没有身份验证方法的用户在打开页面时看到挑战,但是我希望域中的用户被自动身份验证。因此,我认为我可以创建一种方法来“检查”该用户是否通过身份验证,如果他/她是我,则可以获取用户信息,否则,只需显示一个登录按钮即可(然后调用GetUser方法) :
(1 | op | 2 * 5) == (1 | op | (2 * 5)) != ((1 | op | 2) * 5)
这个想法是,如果返回true,我可以调用具有[Authorize]属性的GetUser()方法。问题是,如果我没有Check方法的[Authorize]属性,它总是返回false,如果我添加[Authorize]它可以正常工作,但是会挑战尚未通过身份验证的用户。
这是GetUser方法:
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="bla.bla.bla"
基本上我想要的是Check方法,以不强制挑战。我只想知道用户是否已通过身份验证。我查找了删除WWW-Authenticate标头的方法,但无法使其正常工作。
角度通话:
[HttpGet("Check")]
public IActionResult Check()
{
return Ok(User.Identity.IsAuthenticated);
}
有什么建议,更好的主意吗?
谢谢