gpt4 book ai didi

asp.net-mvc - 'force' 用户在查看 ASP.NET MVC 站点之前如何填写配置文件?

转载 作者:行者123 更新时间:2023-12-05 01:22:45 26 4
gpt4 key购买 nike

我的用户第一次注册后,我希望他们必须在网站内填写个人资料页面。我设置了它,如果他们之前没有填写个人资料,它会在登录期间重定向他们,但如果他们在网站内输入另一个 url,他们目前可以在重定向后自由地去任何他们想去的地方。

当用户尝试访问我网站上的任何页面直到他们完成个人资料时,要求用户访问个人资料页面的最佳方式是什么?

是否最好通过将“if (!user is verified) - redirect to profile page”放在每个 Controller 的顶部来完成?有没有更优雅的解决方案?

最佳答案

从实现自定义操作过滤器 (IActionFilter) 开始:

public class ProfileRequiredActionFilter : IActionFilter
{
#region Implementation of IActionFilter

public void OnActionExecuting(ActionExecutingContext filterContext)
{
//TODO: Check if the Authenticated User has a profile.

//If Authenicated User doesn't have a profile...
filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
}

public void OnActionExecuted(ActionExecutedContext filterContext)
{
}

#endregion
}

然后在 Global.asax 的 RegisterGlobalFilters 方法中全局注册 Action Filter...

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ProfileRequiredActionFilter());
}

注意:如果您不希望全局应用此过滤器,您可以创建一个 ActionFilterAttribute 并将其应用于 Controller 和/或操作方法...

public class ProfileRequiredAttribute : ActionFilterAttribute
{
#region Implementation of IActionFilter

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);

//TODO: Check if the Authenticated User has a profile.

//If Authenicated User doesn't have a profile...
filterContext.Result = new RedirectResult("Path-To-Create-A-Profile");
}

#endregion
}

关于asp.net-mvc - 'force' 用户在查看 ASP.NET MVC 站点之前如何填写配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com