我想知道如何重定向用户。我有一个控制器索引(),我希望只有具有“学生”角色的用户才能进入那里!所以我用
[Authorize(Roles="Student")]
我想知道如何将没有此角色的用户重定向到主页
答案 0 :(得分:7)
您可以通过更改 web.config 上的loginUrl
属性来执行此操作。将其更改为所需的路线:
<authentication mode="Forms">
<forms loginUrl="~/Home/Index" timeout="2880" />
</authentication>
在MVC6中,您可以尝试(在Startup.cs
内):
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookieAuthenticationOptions>(options =>
{
options.LoginPath = new PathString("/Home/Index");
});
}
答案 1 :(得分:0)
有一种浮动方法适用于MVC5。我认为它也适用于MVC6。
在您的Controller内,像这样创建一个Custom Auth方法。
public class YourCustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// If they are authorized, handle accordingly
if (this.AuthorizeCore(filterContext.HttpContext))
{
base.OnAuthorization(filterContext);
}
else
{
// Otherwise redirect to your specific authorized area
filterContext.Result = new RedirectResult("~/YourController/Unauthorized");
}
}
}
然后将数据注释更改为
[YourCustomAuthorize(Roles = "Admin")]
public class UserController : Controller
{
// Omitted for brevity
}
答案 2 :(得分:-6)
您是否尝试使用会话?
我猜你有登录页面然后在登录后尽快分类会议
然后简单如果条件会这样做。
<%If Session("userRole")="Student" Then%>
This is the text version of the page
<%Else%>
Response.Redirect("notavailablepage.html")
<%End If%>