您的位置:首页 > 其它

MVC 3.0 身份认证

2012-08-23 00:34 176 查看
@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方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: