MVC从模型访问登录用户

本文关键字:登录 用户 访问 模型 MVC | 更新日期: 2023-09-27 18:07:29

我有一个具有CRUD视图的模型。当用户向数据库插入数据时,我希望自动添加两条信息。添加信息和时间戳的用户。现在时间戳很容易,但我有问题与用户。

我想访问模型本身内的当前登录用户,我还没有找到一种方法。或者(还没有尝试过——只是考虑过)用用户的详细信息填充视图中的隐藏字段。

对我来说,在模型中拥有数据似乎比在最终用户可以操纵的视图中更安全;我认为这种情况不可能发生。

无论如何-问题:1)我是否应该将模型中的adddedby属性设置为模型内或视图内的用户名?

2)如果应该在模型内完成…我怎样才能访问用户的数据?

谢谢。

MVC从模型访问登录用户

默认的项目设置会给你dbo。用于存储用户id的AspNetUsers。或者,您可以自定义一些内容。

你的模型需要引用UserName…用于注册(如果允许)和登录。在这里,用户输入他们选择的任何登录名(或者有人为他们分配的登录名)。此时,用户应该能够纠正任何拼写错误或更改名称。你可能选择了不允许。但如果你想显示用户名,它必须在某处可用。

为了防止用户在输入数据时进行更改,可以将字段设置为显示或隐藏。这样,您仍然可以捕获userID,但不会给他们任何更改它的机会。

在视图中,您可以使用:@Html.DisplayName(User.Identity.Name) or User.Identity.GetUserName()来显示名称。

如果你不想让用户看到自己的名字??设置字段为隐藏@Html.HiddenFor(User.Identity.Name)

创建视图:

@Html.TextBoxFor(model => model.UserName, new { Value = User.Identity.Name, @Type="Hidden"} )

日期/时间:

        @DateTime.Now.DayOfWeek
        @DateTime.Now.ToString("MM/dd/yyyy hh:mm tt")
        @Html.TextBoxFor(model => model.LogDate, new { Value = @DateTime.Now, @Type = "Hidden" })

确保你在控制器的"bind"语句中引用了你想要包含在数据库中的字段值。