使用实体框架工作等的net mvc 5应用程序,并且是.net c#etc的新手(用于php& sessions)
所以我已经阅读了关于使用.nets身份验证服务的分配,这是一些用户在使用FormsAuthentication.SetAuthCookie登录时注册的方法。
但是我需要对用户组进行身份验证,例如admin或moderator。根据我的理解,这可以通过[authenticate(roles =“admin”)]来实现和设置。
但是,如果用户知道怎样才能将注册角色从用户更改为管理员以访问受限制的内容,那么肯定会使用设置Cookie吗?
因此,尽可能简单的说明.net mvc如何确保用户身份验证的安全性?我可以使用会话而不是cookie吗?我需要创建自己的身份验证系统吗?
我搜索并阅读了所有我能找到的内容,大多数资源只是解释了Cookie如何工作或如何使用Cookie实现身份验证,但很少有关于会话的信息。
答案 0 :(得分:0)
我会尽量简洁:
是的,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
对象存在),但你不应该。
如果情况出现,您绝对需要传递一些任意数据,那么ViewBag
,ViewData
和TempData
就会出现。
我不能说,这些构造是多余的,它们肯定会不时地使用它们,但是请尝试设计你的应用程序以最大限度地使用强类型模型,viewmodels并利用基于REST的网址架构来获取或存储您的数据。