c# - 用户认证

标签 c# asp.net-mvc asp.net-mvc-3 authentication identity

已搜索找不到任何相关内容。

到目前为止,我已经使用 C# 在 MVC 中构建了一个很酷的 Web 应用程序。我创建了一个用户模型

public class User
{

    // Must be named EntityNameId, must have primary key!
    public int UserId { get; set; }

    [DisplayName("First Name")]
    public string firstName { get; set; }
    [DisplayName("Last Name")]
    public string lastName { get; set; }
    [DisplayName("Cell Number")]
    public string cellNumber { get; set; }

}

因此为每个用户设计了个人资料/仪表板

/User/Profile/1

通过他们的 ID 访问。我还有其他部分,例如用于编辑项目的菜单/Item/Index/1,它显示该用户的所有项目等。我的代码可以为用户过滤和填充这些页面。但到目前为止我还没有实现任何身份验证。我想通过 ApplicationServices 使用内置的身份验证工具,并且之前已经使用过角色:

<Authorize(Roles:="Manager,Administrator")>

但是我想将页面限制为登录的特定用户? IE。/User/Profile/1 只能由该用户等访问,而不是由他们所服务的角色访问。

有人知道如何做到这一点吗?我知道这可能意味着将帐户 Controller 和用户 Controller 绑定(bind)在一起,但不太确定如何做到这一点以使一切都一样?应用程序基本上完成了,虽然很简单,但只需要身份验证。

最佳答案

只需在操作方法顶部做一个简单的检查,如果不是当前用户,则执行重定向。

public ActionResult Profile(int id)
{
    if (CurrentUser.Id != id)
    {
        return RedirectToAction("Index");
    }

    return View();
}

如果你经常使用它,你可以将它重构为一个方法。

关于c# - 用户认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15707305/

相关文章:

c# - 为什么设置静态方法会导致堆栈溢出?

javascript - 将日期字符串从 C# Controller 传递到 Javascript 函数正在改变字符串

c# - ASP.NET MVC 3 默认包含命名空间 System.ComponentModel.DataAnnotations

c# - String.Format 类实用程序的正则表达式

c# - 使用 HttpWebRequest 的网络身份验证和网站身份验证

c# - 什么是 MVC future 库?

asp.net-mvc - DotNetNuke 中的 ASP.NET MVC?

c# - 对话框模式在 asp.net core mvc 5 中不起作用

asp.net-mvc-3 - R#6 - 在 Razor View 中建议 "Use directory"。如何禁用?

c# - 比较大量对象