mvc给用户设置角色主要步骤

1.IBLL层

添加方法声明

public partial interface IUserInfoService:IBaseService<UserInfo>
{
//oh ,my baby,oh ,my baby

IQueryable<UserInfo> LoagPageData(Model.Param.UserQueryParam userQueryParam);

bool SetRole(int userId, List<int> roleIds);
}

  BLL层  方法实现 :现将原来的角色全部删除,在重新添加角色(存放在集合中)

  public bool SetRole(int userId, List<int> roleIds)
        {
            var user = DbSession.UserInfoDal.GetEntities(u => u.ID == userId).FirstOrDefault();
            user.RoleInfo.Clear();//全剁掉。

            var allRoles = DbSession.RoleInfoDal.GetEntities(r => roleIds.Contains(r.ID));
            foreach (var roleInfo in allRoles)
            {
                user.RoleInfo.Add(roleInfo);//加最新的角色。
            }
            DbSession.SaveChanges();
            return true;
        }

  2.控制器 UserInfoController

        public ActionResult SetRole(int id)
        {
            //当前要设置角色的用户
            int userId = id;
            
            UserInfo  user= UserInfoService.GetEntities(u => u.ID == id).FirstOrDefault();

            //把所有的角色发送 到前台
            ViewBag.AllRoles = RoleInfoService.GetEntities(u => u.DelFlag == delflagNormal).ToList();

            //用户已经关联的角色发送到前台。
            ViewBag.ExitsRoles = (from r in user.RoleInfo
                                  select r.ID).ToList();

            return View(user);

        }

  3.view层中 设置选择给用户选择角色的界面

<div>
         <h2>当前给用户:  @Model.UName 设置角色</h2>
        <hr />
        @{
            //所有的角色
            List<LTeasyOA.Model.RoleInfo> allRoles = ViewBag.AllRoles;
            //所有当前用户已经存在的角色
            List<int> existRoleIdList = ViewBag.ExitsRoles;

            using (Ajax.BeginForm("ProcessSetRole", "UserInfo", new AjaxOptions() { OnSuccess = "afterSetRole" }))
            {

            <input type="hidden" name="UId" value="@Model.ID"/>
                
            
                foreach (var roleInfo in allRoles)
                {
                    string str = "ckb_" +roleInfo.ID;
                    if (existRoleIdList.Contains(roleInfo.ID))
                    {
                        <input type="checkbox" checked="checked" value="@str" name="@str" id="@str"/>
                    }
                    else
                    {
                        <input type="checkbox"  value="@str" name="@str" id="@str"/>
                    }
                    
                    <label for="@str">@roleInfo.Name</label>
            
                    <br />
                 

                }
            }
        }
    </div>

  4.提交选择的角色到数据库中

   public ActionResult ProcessSetRole(int UId)
        {
            //第一:当前用户id  --uid
            //第二:所有打上对勾的 角色。 ---> list
            List<int> setRoleIdList =new List<int>();
            foreach (var key in Request.Form.AllKeys)
            {
                if (key.StartsWith("ckb_"))
                {
                    int roleId = int.Parse(key.Replace("ckb_", ""));
                    setRoleIdList.Add(roleId);
                }
            }

            UserInfoService.SetRole(UId, setRoleIdList);
            return Content("ok");

        }

  权限设计数据库设计 关联表会在数据库中自动生成(RoleInfo,R_UserInfo_ActionInfo)

 

 

 

DbSession是数据库上下文,即联系数据库datebase和.net的中间变量,用已操作数据库的最底层

类似 Dbcontext 直接可以可取表变量

 

 

在mvc中只是简单的处理一下

 

 BaseService中CurrentDal只能获取当前Services的类型的Dal

dbSession在这里理论是取所有的_Dal层表 ,但是在这里 只声明,未赋值,要想取到其他_Dal在这里只能在Spring.net中注册,给DbSession注册所有_DAl或者在_Service中注册只用得到的_Dal,,,,,或者直接在代码中赋值(比较好)

 

转载于:https://www.cnblogs.com/lt123/p/7058042.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVC(Model-View-Controller)是一种软件设计模式,它将应用程序的不同部分分离成三个核心组件:模型、视图和控制器。在MVC架构中,Servlet可以充当控制器的角色,负责处理用户的请求并将其传递给合适的模型或视图。 在一个MVC架构的登录功能中,用户通过浏览器发送登录请求。Servlet接收到这个请求后,从请求参数中获取用户输入的用户名和密码,并将它们传递给模型层进行验证。模型层会验证这些凭据的有效性,如果用户名和密码正确,则返回一个成功的登录状态;否则返回一个登录失败的状态。 在模型层验证过程中,可以通过AJAX(Asynchronous JavaScript and XML)技术将用户输入的用户名和密码以异步方式发送给服务器。AJAX调用后端的Servlet,Servlet接收到请求后,调用模型层对用户凭据进行验证。然后,服务器将验证结果返回给前端的JavaScript代码,通过回调函数将结果展示给用户。如果登录成功,则前端会根据返回的结果进行页面跳转或其他操作;如果登录失败,则会提示用户重新输入凭据信息。 总结来说,MVC模式结合Servlet和AJAX实现登录功能,具有以下步骤用户通过浏览器发送登录请求,Servlet接收到请求并将数据传递给模型层进行验证,模型层返回验证结果给Servlet,Servlet再将结果返回给前端JavaScript代码,前端根据结果做相应的操作。 通过使用MVC、Servlet和AJAX,我们可以实现一个用户友好、有效的登录功能。这种架构将不同的功能逻辑分离,让代码更加清晰和易于维护,同时也提供了更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值