我正在尝试创建一个简单的用户身份验证功能,但我无法让它工作。这是我正在处理的代码:
public class LoginController : ApiController
{
private void SetPrincipal(IPrincipal principal)
{
Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
{
HttpContext.Current.User = principal;
}
}
public bool Login(string token)
{
//Check token
if (.....)
{
//Authenticate user
var identity = new GenericIdentity("Test user");
SetPrincipal(new GenericPrincipal(identity, new string[]{"Test role"}));
}
}
[Authorize]
public string TestFun()
{
return "Hello " + User.Identity.Name;
}
}
所以,如果我尝试先调用方法TestFun()
,它会返回错误代码 401。但是,当我调用方法时Login()
,它应该以某种方式保存用户凭据,但这是我迷路的地方,我无法让它工作。
TestFun()
即使我Login()
先打电话,也总是返回错误代码 401。如果我尝试return "Hello " + User.Identity.Name;
输入该Login()
函数,它会返回正确的用户名,但在TestFun()
该用户中不可用。
我什至尝试过使用 Sessions 和 FormsAuthentication ,但即使在这个非常简单的示例中,我也无法让它工作。
有人可以告诉我我错过了什么吗?
谢谢!