Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 要求对某些操作进行重新身份验证_Asp.net Mvc 3_Security - Fatal编程技术网

Asp.net mvc 3 要求对某些操作进行重新身份验证

Asp.net mvc 3 要求对某些操作进行重新身份验证,asp.net-mvc-3,security,Asp.net Mvc 3,Security,对于某些操作,如更改电子邮件设置或管理员活动,我希望用户在操作完成之前重新验证。在ASP.NET MVC 3中有这样做的好模式吗?Descpription 例如,您可以使用用户名、密码和要更改的字段(电子邮件)创建操作方法。然后在数据的[HttpPost]中验证此数据。如果授权成功,则对其进行更改,如果未成功,则将错误添加到ModelState 为此,请使用ViewModel 样品 如果您想动态拦截并重新验证已经通过身份验证的人,您可能还可以使用一个特殊的cookie来处理这个问题。需要重新验证

对于某些操作,如更改电子邮件设置或管理员活动,我希望用户在操作完成之前重新验证。在ASP.NET MVC 3中有这样做的好模式吗?

Descpription 例如,您可以使用
用户名
密码
和要更改的字段(
电子邮件
)创建操作方法。然后在数据的
[HttpPost]
中验证此数据。如果授权成功,则对其进行更改,如果未成功,则将错误添加到
ModelState

为此,请使用ViewModel

样品
如果您想动态拦截并重新验证已经通过身份验证的人,您可能还可以使用一个特殊的cookie来处理这个问题。需要重新验证的操作可以使用自定义筛选器进行修饰,该筛选器覆盖授权以检查cookie,如果找不到,则重定向以获取用户名和密码。模式,无代码:

User clicks link to uber-protected action.
Filter on action looks for cookie and does not find it, redirects to sign in.
User signs in, and you write a special cookie 
    (different from the forms auth cookie), 
    then redirect back to original action. 
Filter on action looks for cookie and finds it authorizing user.
cookie的生存期至少必须一直到uber保护操作的http post。您必须决定何时删除它。例如,用户为一个受uber保护的操作重新身份验证后,是否希望他们在同一浏览器会话中为第二个受uber保护的操作重新身份验证

User clicks link to uber-protected action.
Filter on action looks for cookie and does not find it, redirects to sign in.
User signs in, and you write a special cookie 
    (different from the forms auth cookie), 
    then redirect back to original action. 
Filter on action looks for cookie and finds it authorizing user.