我有一个现有的用户数据库,所以我不使用开箱即用的 .NET 用户配置文件。
我有一个控制器,我在其中实现了创建用户、检索密码、注册用户、查看等功能。唯一的问题是,如何在 Web 应用程序中传递用户登录凭据(例如用户 ID、登录时间、角色等)以便它可以用作某些页面的安全访问手段?例如,只有具有管理员角色的用户才能访问特定页面。
我应该将它作为会话对象传递吗?
我有一个现有的用户数据库,所以我不使用开箱即用的 .NET 用户配置文件。
我有一个控制器,我在其中实现了创建用户、检索密码、注册用户、查看等功能。唯一的问题是,如何在 Web 应用程序中传递用户登录凭据(例如用户 ID、登录时间、角色等)以便它可以用作某些页面的安全访问手段?例如,只有具有管理员角色的用户才能访问特定页面。
我应该将它作为会话对象传递吗?
初学者使用表单身份验证:ASP.NET 表单身份验证概述
将数据库用户 ID 保存在上面。
FormsAuthentication.SetAuthCookie(userId, rememberMe);
有了它,您始终可以获取用户 ID。然后,您可以在需要时使用用户 ID 获取用户详细信息。如果您一直需要它,请将其缓存在 Session 对象上。在任何情况下,都要使用表单身份验证,因为即使会话终止,您也始终可以从表单身份验证中再次获取用户 ID 并重建其缓存。使用表单身份验证的另一个优点是,如果您在 Web 场中,则每个 Web 服务器都有一个会话对象,但由于用户 ID 在身份验证 cookie 上始终可用,因此您始终可以获取它。
You can use ASP.Net membership provider to specify access for different roles or users.
To require users to login, use:
[Authorize]
public class YourController : Controller
// Or
[Authorize]
public ActionResult YourAction()
To restrict access for specific roles, use:
[Authorize(Roles = "Admin, User")]
public class SomeController : Controller
// Or
[Authorize(Roles = "Admin, User")]
public ActionResult SomeAction()
And to restrict access for specific users, use:
[Authorize(Users = "ABC1, ABC2")]
public class SomeController : Controller
// Or
[Authorize(Users = "ABC1, ABC2")]
public ActionResult SomeAction()
For more please have a look on http://www.codeproject.com/Articles/288631/Secure-ASP-NET-MVC3-applications
Please feel free to ask further specific question. Thanks.