我有一个自定义模块,它使用Routes.cs和AdminController.cs文件来定义新的URL路由和要采取的操作,但只能在用户登录时访问。我尝试添加[Authorize] ]和AdminController.cs文件中的[AllowAnonymous]属性,我尝试在Web.config文件中包含以下内容:
<location path="/speedbump">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
这些方法似乎都不起作用。我如何确保网站的所有用户/访问者都可以访问此网址,而不仅仅是那些登录的用户?谢谢。
Routes.cs文件:
public class Routes : IRouteProvider
{
public void GetRoutes(ICollection<RouteDescriptor> routes)
{
foreach (var routeDescriptor in GetRoutes())
routes.Add(routeDescriptor);
}
public IEnumerable<RouteDescriptor> GetRoutes()
{
return new[] {
new RouteDescriptor {
Priority = 15,
Route = new Route(
"speedbump",
new RouteValueDictionary {
{"area", "Speedbump"},
{"controller", "Admin"},
{"action", "isValidURL"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "Speedbump"}
},
new MvcRouteHandler())
}
};
}
}
AdminController.cs文件:
[Authorize]
public class AdminController : Controller
{
public ActionResult Index()
{
return View();
}
[AllowAnonymous]
public void isValidURL()
{
string requestedURL = Request.QueryString["url"];
//Create a list of strings to contain all the "valid" URLs
var whiteList = new List<string>();
//Add URLs to the list
whiteList.Add("www.google.com");
foreach (string validURL in whiteList)
{
if (requestedURL == validURL)
{
Response.Write("Speedbump");
//Response.Redirect(requestedURL);
}
}
}
}
答案 0 :(得分:0)
不要使用AdminController
,创建另一个名为AnythingelseController
的控制器。管理员控制器是管理员的东西。它基本上将Admin过滤器添加到该控制器,以便尝试访问该控制器中的操作的用户需要AccessAdminPanel权限。
如果您希望该控制器中的某些页面为admin,而某些页面为匿名主题页面,则创建控制器MyController
,然后使用[Admin]
和匿名主题方法[Themed]
修饰管理方法。