Fab*_*cio 0 c# entity-framework asp.net-mvc-4
我想允许用户只有在激活他的帐户(电子邮件确认等)时才能访问某些站点区域.
我想允许他登录,但如果他没有激活他的帐户(我user.confirmed有财产),我想将他重定向到一个页面,提醒他确认他的帐户.
我怎样才能做到这一点?我不能if在每个控制器方法中放置一个来检查它.
您可以编写自己的AuthorizeAttribute并从那里重定向用户,这意味着它就像装饰您的动作一样简单,即
public class ConfirmedUsersOnly: AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var loggedInUser = // pull user from storage
return httpContext.User.Identity.IsAuthenticated && loggedInUser.confirmed;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.Request.IsAuthenticated)
{
// handle normal unauthorized redirect (e.g. login page)
base.HandleUnauthorizedRequest(filterContext);
}
else
{
// redirect users who are logged in but not confirmed
filterContext.HttpContext.Response.Redirect("NotConfirmedUrl");
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法
[ConfirmedUsersOnly]
public ActionResult ConfirmedAccountAction()
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |