2016-01-06 2 views
0

У меня есть приложение, которое реализует единый вход (SSO). URL для входа - это (https://sso.myced.com/SSOLogin.aspx?ReturnUrl=http://localhost:14877/Home). Возврат будет URL-адресом приложения, которое я создаю (localhost: 14877/Home). У меня есть [Авторизовать] атрибут на мой контроллер,Перенаправление на другой сайт для аутентификации (SSO) ... MVC 5

 [Authorize] 
    public class HomeController : Controller 

и когда пользователь пытается получить доступ мое приложение, они будут перенаправлены на SSO URL, Логин и перенаправляется обратно в мое приложение.

По умолчанию MVC перенаправляет контроллер учетной записи и действие входа. Как мне сказать MVC, я хочу перейти на свой собственный URL-адрес, а не «~/Account/Login»?

+0

Вы получили правильный ответ от @Stralos, но мне интересно ... когда пользователь проходит аутентификацию в myced.com , как ваше приложение узнает, что это нормально, чтобы пользователь в? –

+0

Его заботятся в проекте ssologin .. я получил это для работы – BoundForGlory

ответ

2

Напишите свой собственный атрибут Authorize и используйте его вместо авторизации. Что-то вроде этого:

public class CustomAuthorize : AuthorizeAttribute 
     { 
      protected override bool AuthorizeCore(HttpContextBase httpContext) 
      { 
       return /*Chech if user is loged in*/ 
      } 

      protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
      { 
       filterContext.HttpContext.Response.Redirect(URL TO REDIRECT); 
      } 
    } 

Затем используйте его на контроллере:

[CustomAuthorize ] 
public class HomeController : Controller 
+0

спасибо за ответ. Я изучал это раньше, но немного смутился. Я рассмотрю следующий подход: – BoundForGlory

+0

@ Если вы довольны моим ответом, не забудьте проголосовать за него или отметить его. Если нет, вы можете добавить то, что мне не хватает. – Stralos

+0

Извините ... я просто сделал – BoundForGlory

Смежные вопросы