ASP.NET身份验证是一个灵活的框架,用于处理Web应用程序中的用户身份验证。它非常棒,我强烈建议您在项目中继续使用它。
Identity不支持匿名用户,而是一个框架,让您管理已经通过身份验证的用户。Identity将允许您维护本地用户,或者如果您想要,通过外部服务(例如Facebook或Google)进行身份验证的用户。
看起来您希望您的Web应用程序的一部分可以访问未经身份验证的用户。您可以通过在ASP.NET控制器上添加属性来实现这一点。
将[Authorize]
属性添加到控制器或控制器方法将告诉MVC确保用户已经通过身份验证并且已被授权。然而,要允许匿名用户,只需在您想要公开访问的方法上放置[AllowAnonymous]
属性即可。
但是,您仍然可以知道用户是否已经通过身份验证。考虑以下示例控制器和方法:
[Authorize]
public class PostController : Controller
{
[AllowAnonymous]
public ActionResult Index()
{
var isAuthenticated = User.Identity.IsAuthenticated;
return View();
}
}
isAuthenticated
可以让你知道当前用户是否已登录,如果已经登录,你可以从 User.Identity
对象中获取更多信息。
关于会员框架之间的区别的一般问题,我将转而参考官方文档,该文档对差异进行了很好的概述:
http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity。 您肯定希望在您的Web应用程序中使用ASP.NET Identity。
更新
查看这个示例代码,它将帮助您区分在记录帖子到数据库时尚未注册的用户。
[Authorize]
public class PostController : Controller
{
[AllowAnonymous]
public HttpStatusCodeResult CreatePost(string postText)
{
var isAuthenticated = User.Identity.IsAuthenticated;
var userId = "";
if (isAuthenticated)
userId = User.Identity.GetUserId();
var post = new
{
PostText = postText,
Anonymous = !isAuthenticated,
UserId = userId
};
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}