允许用户访问[授权]页面-MVC - c#

我的项目的页面带有[Authorize],用户必须登录才能访问这些页面。

使用与数据库中相同的用户名和密码成功登录后,当前用户ID将存储在会话中。但是,如何验证/允许用户使用[授权]访问页面?

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(User u)
    {

        if (ModelState.IsValid) //this is check validity
        {

            using (UserEntities db = new UserEntities())
            {

                var v = db.Users.Where(a=>a.UserName.Equals(u.UserName) && a.Password.Equals(u.Password)).FirstOrDefault();
                if (v != null)
                {
                    Session["LoggedUserID"] = u.Id.ToString();
                    Session["UserFullname"] = u.Name.ToString();

                    return RedirectToAction("AfterLogin");

                }

            }
        }
        return View(u);
    }

任何帮助都非常感谢。谢谢。

参考方案

如果您绝对想使用Session自己管理登录名和安全性,则可以创建自己的操作过滤器,以检查session是否设置了用户ID。

像这样

public class AuthorizeWithSession : ActionFilterAttribute
{       
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.HttpContext.Session == null ||
                                      context.HttpContext.Session["LoggedUserID"]==null)
        {
            context.Result =
                new RedirectToRouteResult(new RouteValueDictionary(
                                     new {controller = "Account", action = "Login"}));
        }
        base.OnActionExecuting(context);
    }
}

现在,在您的安全操作/控制器上装饰此操作过滤器

[AuthorizeWithSession]
public class TeamController : Controller
{
}

Spring MVC:如何获取请求的处理程序方法 - java

我正在尝试根据Spring @RequestMapping注释方法上存在的注释实现一些逻辑。因此,我的方法中有一个HttpServletRequest实例,我想问一下spring“给我一个方法,该方法将被调用以处理此请求”,因此我可以使用反射API来询问是否存在我的注释,因此我可以更改处理。有什么简单的方法可以从Spring MVC获取此信息? java大神…

在Asp.Net MVC Razor中将HTML视图作为电子邮件附件发送 - javascript

我目前在Razor ASP.Net MVC工作。在这里,我有一个HTML view,名为“客户付款”,它是根据某些计算在RAZOR中生成的,并显示在HTML dialog中。我想将此Html View作为电子邮件附件发送。但是在这里,我感到困惑,我不得不将这个HTML View转移到.PDF or .jpg中的某些jQuery中,然后将其发送到Control…

调试捆绑和版本化的javascript文件 - javascript

我已经使用Bundleconfig.cs将我的JavaScript文件打包如下:bundles.Add(new ScriptBundle("~/bundles/resultscripts").Include( "~/Scripts/spectrum.js", "~/Scripts/notify.js"…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

在扩展控制器中更改ViewData的类型 - c#

我创建了自己的CustomController基类,该基类继承自Controller。同样,我创建了自己的CustomViewData,它继承自ViewDataDictionary。CustomController类具有一个接受CustomViewData作为参数的ctor。我所有的控制器都继承自CustomController并传递其继承的CustomVi…