强制重新授权

时间:2017-07-26 10:58:20

标签: c# asp.net-mvc asp.net-identity

找到这个没有好运,但是我想通过强制他们再次登录来重新检查用户,然后再继续查看视图或POST。我该如何做到这一点?

背景是该用户是管理员(管理员角色),并且在执行该功能之前,我希望保护一些管理员功能,以强制他们再次输入密码。其中一个功能是重置数据,所以基本上需要事先检查。

2 个答案:

答案 0 :(得分:0)

我认为您可以使用会话超时或身份验证超时,这样您就可以腾出时间,例如,如果管理员离开10分钟或者某个时间,它会因为会话结束而退出,但会话的默认时间是20分钟。

我发现这个用于身份验证超时并且也称为Owin身份验证,您应该在StartUp.cs文件夹中的App_Start文件中输入类似内容:

public void ConfigureAuth(IAppBuilder app)
{
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        // here you go
        ExpireTimeSpan = new TimeSpan(60000000000)
    });
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}

或点击此处for the session timeout

答案 1 :(得分:0)

请在发布期间请求并行身份验证。

无论用户是否登录天气,您都可以在发布的表单中包含用户名和密码(或任何身份验证凭据)。在帖子之前,获取凭据,添加到表单并发布。

这样,您可以在操作方法本身中验证用户。如果凭据错误,您可以中止该功能并返回错误。

仅在启动帖子时显示凭据字段(如在引导模式中)。你可以使用jQuery来实现这一目标。

修改:

在这里,我们没有使用cookie中的任何内容。或任何以前存储的位置。 我们让用户在表单中输入UN,密码 ,使用authorize方法验证现在收集的凭据,如果匹配,则继续。

让我进一步解释一下这个情景。

我们有一个需要编辑电子邮件的表单。

所以,我们的表单将是:

//The form includes fields for Username and password without which, you could bring in form validation error.

<form>
  Name: <input type="text" name="Name"><br>
  Email: <input type="text" name="Email"><br>
  UserName: <input type="text" name="UserName"><br>
  Password: <input type="password" name="Password"><br>
  <input type="submit" value="Submit">
</form>

,操作是:

public ActionResult EditUser(string Name, string Email, string UserName, string Password)
{
    if(AutorizeLogin(UserName,Password)) //The Login function which returns bool(The function used for login)
    {
        var User = DBContext.Users.SingleOrDefault(x=>x.UserName == UserName);
        User.Name = Name; //Edit the values
        User.Email = Email;
        DBContext.SaveChanges(); //Save changes to database
    }
    else
    {
        //throw error
    }
}

即使用户已登录,但没有UN和Pwd,他也无权更改电子邮件或姓名。