@Html.Partial("_LogOnPartial") /这样简单的引用就可以将其他页面作为一个控件引用到该页面来。
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); //登录,创建Cook
FormsAuthentication.SignOut(); //注销
HashPasswordForStoringInConfigFile
http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile
权限判断
我觉得是在页面验证之后要授权时,该方法在全局的Global.asax中,我们需要委托该事件。
委托时我们再去根据当前用户获取角色,或者此时早已经将角色获取好了,只是加入到系统的Context之用。
代码
public MvcApplication() { AuthorizeRequest += new EventHandler(MvcApplication_AuthorizeRequest); } void MvcApplication_AuthorizeRequest(object sender, EventArgs e) { IIdentity id = Context.User.Identity; if (id.IsAuthenticated) { var roles = new UserBusiness().GetRoles(id.Name); string[] rolelist = new string[] { roles.Name }; Context.User = new GenericPrincipal(id, rolelist); } }
然后我们在UserController只用需要权限的方法上加上对应的[Authorize]标志即可
如代码
//新建 // GET: /User/Create [Authorize] public ActionResult Create() { return View(); }
如果你觉得,这样只是对于登录后所有的人有效,而你需要对指定的角色有效,你可以尝试用下面的方法。
代码如下
//新建 // GET: /User/Create [Authorize(Roles="admin")] public ActionResult Create() { return View(); }
此时如果你的用户不是admin那么你就请求不了该Create方法