2011-10-01 34 views
6

Estoy trabajando en una aplicación Asp.Net MVC 3. He creado el área de administración para el sitio web y he aplicado el atributo [Authorized] a actionmethods después de iniciar sesión. Cuando intento acceder a estas URL directamente sin iniciar sesión como admin/home o admin/productlist, me redirigen a/Home/Login con un error de autenticación. Quiero redirigir a Admin/Login.Authorize login URL en asp.net MVC 3

Sugerido. Gracias

+0

¿Has mirado en esta respuesta: http://stackoverflow.com/questions/6447728/formsauthentication-loginurl/6452419#6452419 – frennky

Respuesta

7

La URL de inicio de sesión para las aplicaciones ASP.NET (incluyendo los MvC3) se controla en web.config, en la sección de autenticación de formularios:

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Home/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 

El truco para usted es que usted quiere dos de usuario diferente URLs ASP.NET tiene una gran característica en la que puede tener un archivo web.config en cada directorio de su proyecto y, según sea necesario, usará la configuración más específica que pueda encontrar, hasta la raíz web.config. Así que en la carpeta en la que tiene su punto de vista de administrador ("admin" supongo), usted debe ser capaz de crear una segunda web.config, que se aplicará sólo a aquellas páginas y más bajo en el árbol:

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Admin/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 
+0

significa esto realmente funciona? http://stackoverflow.com/a/749257/205859 –

0

Puede anular su filtro de acción Autorizar para manejar esos problemas. Por ejemplo, puede verificar no solo los roles, sino algunos permisos específicos, y redireccionar a diferentes URL. Y también utilizando este enfoque puede tener en cuenta su configuración de enrutamiento.
Tome un vistazo a esta respuesta: asp.net mvc Adding to the AUTHORIZE attribute

+0

Parece que esto evita el método KISS. Como eliminar mi solución propuesta en el archivo web, de forma rápida y limpia soluciona el problema de enrutamiento. – Skindeep2366

8

Si esto es un 3 Autorización de la MVC entonces a mí mismo, así como muchos otros han tenido problemas con la dirección URL incorrecta de ser fijada para la Acción "inicio de sesión" ... Por alguna razón por la que autorizar intenta enviar a un usuario a Cuenta \ Iniciar sesión y al mirar las vistas de la cuenta dice que en realidad no hay vista de "Inicio de sesión", se llama "Iniciar sesión", por lo que debe corregir esto en el archivo Web.config con lo siguiente:

   <add key="loginUrl" value="~/Account/LogOn" /> 
+1

Sí, sí, sí! – contactmatt