【问题标题】:.net mvc authentication cookies & sessions.net mvc 身份验证 cookie 和会话
【发布时间】:2015-03-25 02:11:06
【问题描述】:

net mvc 5 应用程序使用实体框架等,是 .net c# 等的新手(用于 php 和会话)

所以我已经阅读了有关使用 .nets 身份验证服务的内容,这就是在登录时使用 FormsAuthentication.SetAuthCookie 注册用户的一些方法。

但是我需要对用户组进行身份验证,例如管理员或版主。据我了解,这可以使用 [authenticate(roles="admin")] 来实现和设置。

但如果这是使用设置的 cookie,那么用户是否知道如何将其注册角色从用户更改为管理员以访问受限内容?

那么,尽可能简单地说,.net mvc 如何确保验证用户的安全性?我可以使用会话而不是 cookie 吗?我需要创建自己的身份验证系统吗?

我已经搜索并阅读了所有我能找到的内容,大多数资源只是解释了 cookie 的工作原理或如何使用 cookie 实现身份验证,但很少涉及会话。

【问题讨论】:

标签: asp.net-mvc authentication asp.net-mvc-5 session-cookies


【解决方案1】:

我会尽量简洁:

是的,ASP.NET MVC 5 使用开箱即用的 cookie(如果您在项目向导中选择了个人用户帐户)

通过[Authorize(Roles="bla")] 属性授权一个组或角色来装饰控制器和/或控制器方法就可以做到这一点。
好像你会写

if(!User.IsInRole("bla"))
{
    return new HttpUnauthorizedResult();
}
else
{
    //here's your ultra-secret View
    return View();
}

如果用户在会话期间更改角色或他或她有一个持久性 cookie 怎么办?
确实,您需要处理角色更改和 cookie 更新之间的时间间隔。 阅读它here
长话短说:设计决定权在于您是否认为在重新分配角色时注销用户或在每次授权检查时进行数据库往返更好。

你能像 PHP 那样使用会话变量吗?当然可以(Session 对象存在),但您不应该这样做。

如果出现您绝对需要传递一些任意数据的情况,则有ViewBagViewDataTempData

我不会说这些构造是多余的,它们肯定会时不时地使用它们,但请尝试设计您的应用程序以最大限度地使用强类型模型、视图模型并制作使用基于 REST 的 url 架构来获取或放置您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多