当我注销并单击浏览器后退按钮时,我仍然可以在MVC4应用程序中创建,编辑和删除用户

surajnew55

注销后,我的应用程序允许我创建,编辑和删除用户。尽管我在用户身份验证后不久就创建了会话变量,并且在注销时也将其删除。但是在mvc4中,我无法弄清楚在何处检查这些会话变量条件(是否为null)。就像在asp.net(c#)page_load中一样,我们可以在其中执行if条件的页面。

整个互联网上,人们在讨论有关使用Java脚本禁用浏览器后退按钮以及删除cookie的问题,但在我的情况下,一旦用户注销,是否使用浏览器后退按钮查看内容,如果单击该按钮,则应重定向到登录页面。

有人可以协助我找到正确的位置来检查会话变量为空的条件。是风景吗?它是share_layout视图吗?还是控制器?还是我没有其他提示,请帮忙。

这是我的会话控制器代码

[HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult LogIn(User user)
    {
        try
        {
            if (ModelState.IsValid)
            {
                var userdb = db.User.Include("Role").Single(c => c.userName == user.userName);
                if (userdb.passWord == user.passWord)
                {
                    Session["UserId"] = userdb.userId;
                    Session["UserName"] = userdb.userName;
                    Session["RoleName"] = userdb.Role.roleName;


                    if (userdb.Role.roleName == "Employee")
                    {
                        return RedirectToAction("Index", "Employee");
                    }
                    else if (userdb.Role.roleName == "Customer")
                    {
                        return RedirectToAction("Index", "CustomerSite");
                    }
                    else if (userdb.Role.roleName == "Admin")
                    {
                        return RedirectToAction("Index", "Admin");
                    }
                }
 else
                {
                    ViewBag.errorMsg = "We cannot authenticate you please use the right username or password";
                    return View();
                }
            }
            return View();
        }

并注销

 public ActionResult Logout()
    {
        Session.Remove("UserId");
        Session.Remove("UserName");
        Session.Remove("RoleName");
        return RedirectToAction("LogIn", "Session");

    }

从理论上讲,您想使用FormAuthentication它与默认的AuthorizeAttribute开箱即用。

如果要实现自己的逻辑,则可以覆盖AuthorizeAttribute。

这里的例子-

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    private bool AuthorizeUser(AuthorizationContext filterContext)
    {
        bool isAuthorized = false;

        if (filterContext.RequestContext.HttpContext != null)
        {
            var context = filterContext.RequestContext.HttpContext;

            if(context.Session["UserId"] != null)
                 isAuthorized = true;
        }
        return isAuthorized;
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext == null)
            throw new ArgumentNullException("filterContext");

        if (AuthorizeUser(filterContext))
                return;       

        base.OnAuthorization(filterContext);
    }    
}

用法

[MyAuthorizeAttribute]
public class MyController : Controller
{
   ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我注销并单击浏览器后退按钮时,我仍然可以在MVC4应用程序中创建,编辑和删除用户

来自分类Dev

当我在浏览器中输入网址时,无法打开即时应用程序

来自分类Dev

当我在Safari浏览器中点击顶部的应用程序按钮时,如何清除iOS应用程序中facebook的凭据?

来自分类Dev

当我单击按钮时刷新整个用户在WinForms应用程序中输入的数据

来自分类Dev

浏览器的后退按钮破坏了我的Backbone / Marionette应用程序

来自分类Dev

当我在浏览器中单击“后退”按钮时,我需要将上一页重新加载到“另一个URL”

来自分类Dev

当单击浏览器中的后退并且用户已经注销时,如何拒绝用户访问

来自分类Dev

我面临注销时禁用浏览器后退按钮的问题

来自分类Dev

如何在Java单击按钮中注销我的Android应用程序中的Google用户?

来自分类Dev

当我从网址重定向时,Android应用程序已在浏览器上打开

来自分类Dev

用户单击MVC5中的浏览器后退按钮时检索数据时遇到问题

来自分类Dev

用户单击浏览器后退按钮时提交表单

来自分类Dev

当我单击按钮时,应用程序崩溃

来自分类Dev

当我单击按钮时,应用程序停止

来自分类Dev

是否可以从我的应用程序启动网络浏览器,并返回单击的URL?

来自分类Dev

是否可以从我的应用程序启动网络浏览器,并返回单击的URL?

来自分类Dev

当我在Android应用程序中单击“笔记”按钮时,如何调用我的NoteMain类

来自分类Dev

我的jQuery没有在我的mvc4应用程序中调用此按钮控件?

来自分类Dev

我的jQuery没有在我的mvc4应用程序中调用此按钮控件?

来自分类Dev

当用户单击浏览器的后退按钮时,是否可以重置会话变量?

来自分类Dev

当我们使用网络浏览器搜索应用程序时,是否可以更改显示在URL框中的Android应用程序的Web URL

来自分类Dev

仅当用户在角度 4 的特定组件中单击浏览器的后退按钮时,如何检测或运行功能?

来自分类Dev

在单页应用程序中使用浏览器“后退”按钮时,Ace Editor 中的数据损坏

来自分类Dev

当我点击注销时,我的应用程序崩溃

来自分类Dev

当我单击快速WebView中的共享按钮时,重定向到Facebook应用程序

来自分类Dev

当我单击快速WebView中的共享按钮时,重定向到Facebook应用程序

来自分类Dev

当在PHP中单击浏览器的刷新或后退按钮时,如何创建警报框?

来自分类Dev

如何使用桌面应用程序的浏览器小部件在当前版本的Livecode中对浏览器的前进和后退按钮进行编程

来自分类Dev

当我在Chrome中打开THREE.js应用程序时,我的浏览器拖拽不好

Related 相关文章

  1. 1

    当我注销并单击浏览器后退按钮时,我仍然可以在MVC4应用程序中创建,编辑和删除用户

  2. 2

    当我在浏览器中输入网址时,无法打开即时应用程序

  3. 3

    当我在Safari浏览器中点击顶部的应用程序按钮时,如何清除iOS应用程序中facebook的凭据?

  4. 4

    当我单击按钮时刷新整个用户在WinForms应用程序中输入的数据

  5. 5

    浏览器的后退按钮破坏了我的Backbone / Marionette应用程序

  6. 6

    当我在浏览器中单击“后退”按钮时,我需要将上一页重新加载到“另一个URL”

  7. 7

    当单击浏览器中的后退并且用户已经注销时,如何拒绝用户访问

  8. 8

    我面临注销时禁用浏览器后退按钮的问题

  9. 9

    如何在Java单击按钮中注销我的Android应用程序中的Google用户?

  10. 10

    当我从网址重定向时,Android应用程序已在浏览器上打开

  11. 11

    用户单击MVC5中的浏览器后退按钮时检索数据时遇到问题

  12. 12

    用户单击浏览器后退按钮时提交表单

  13. 13

    当我单击按钮时,应用程序崩溃

  14. 14

    当我单击按钮时,应用程序停止

  15. 15

    是否可以从我的应用程序启动网络浏览器,并返回单击的URL?

  16. 16

    是否可以从我的应用程序启动网络浏览器,并返回单击的URL?

  17. 17

    当我在Android应用程序中单击“笔记”按钮时,如何调用我的NoteMain类

  18. 18

    我的jQuery没有在我的mvc4应用程序中调用此按钮控件?

  19. 19

    我的jQuery没有在我的mvc4应用程序中调用此按钮控件?

  20. 20

    当用户单击浏览器的后退按钮时,是否可以重置会话变量?

  21. 21

    当我们使用网络浏览器搜索应用程序时,是否可以更改显示在URL框中的Android应用程序的Web URL

  22. 22

    仅当用户在角度 4 的特定组件中单击浏览器的后退按钮时,如何检测或运行功能?

  23. 23

    在单页应用程序中使用浏览器“后退”按钮时,Ace Editor 中的数据损坏

  24. 24

    当我点击注销时,我的应用程序崩溃

  25. 25

    当我单击快速WebView中的共享按钮时,重定向到Facebook应用程序

  26. 26

    当我单击快速WebView中的共享按钮时,重定向到Facebook应用程序

  27. 27

    当在PHP中单击浏览器的刷新或后退按钮时,如何创建警报框?

  28. 28

    如何使用桌面应用程序的浏览器小部件在当前版本的Livecode中对浏览器的前进和后退按钮进行编程

  29. 29

    当我在Chrome中打开THREE.js应用程序时,我的浏览器拖拽不好

热门标签

归档