我是 ASP.net MVC 的新手,并使用它创建了我的第一个 Web 应用程序。在我的应用程序中,我使用数据库身份验证。我在控制器中创建了登录操作,该操作检查输入的用户名和密码是否存在于数据库中,如果存在,则将所需的值放入会话中,并根据用户的权限将用户重定向到页面,否则将用户重定向到登录页面。像这样
public ActionResult Login()
{
if(uservalid)
{
//set session values and redirect to dashboard
}
else
{
//redirect to login
}
}
在我的应用程序中,有一些功能只能在用户登录时才能访问。我想在用户尝试访问这些功能之前检查用户是否已登录,如果他未登录或没有权限,则重定向到登录页面或显示一些错误消息。
public ActionResult SomeAction()
{
//Available only when user is logged-in
}
那么我如何检查用户是否登录并授予操作访问权限。我读到了有关授权属性的信息,但不知道如何使用它,因为我正在使用数据库身份验证。
如果您正在使用FormsAuthentication您不需要使用 ASP.NET 会话来跟踪当前经过身份验证的用户。
我读到了有关授权属性的内容,但不知道如何使用它
使用数据库身份验证。
假设您使用 FormsAuthentication,一旦您验证了用户的凭据,您应该设置一个表单身份验证 cookie:
public ActionResult Login()
{
if(uservalid)
{
FormsAuthentication.SetAuthCookie("username", false);
return RedirectToAction("SomeProtectedAction");
}
else
{
//redirect to login
}
}
进而:
[Authorize]
public ActionResult SomeAction()
{
string currentlyLoggedInUser = User.Identity.Name;
}
顺便说一句,如果您使用 Visual Studio 中的 Internet 模板创建一个新的 ASP.NET MVC 应用程序,您可能会看看 AccountController,它负责对用户进行身份验证并设置表单身份验证 cookie。当然,您可以扔掉所有实体框架垃圾,并针对您自己的数据库表实现您自己的凭据验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)