【发布时间】:2013-11-14 11:46:05
【问题描述】:
我正在尝试创建一个简单的用户身份验证功能,但我无法让它工作。 这是我正在处理的代码:
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() 总是返回错误代码 401,即使我先调用 Login()。
如果我尝试将 return "Hello " + User.Identity.Name; 放在 Login() 函数中,它会返回正确的用户名,但在 TestFun() 中,用户不可用。
我什至尝试过使用 Sessions 和 FormsAuthentication,但即使在这个非常简单的示例中,我也无法让它工作。
谁能告诉我我错过了什么?
谢谢!
【问题讨论】:
标签: asp.net web-services asp.net-mvc-4 asp.net-web-api restful-authentication