我有一个库类,它包含两个方法,比如Login()和NavigateToPage()。 现在,为了导航到页面,必须登录会话。此外,要登录,首先需要导航到登录页面。 截至目前,我的解决方法是:
Login()
{
NavigateToPage(LoginPage);
// log in and do validation stuff.
// set IsLoggedIn to true for further methods (also for NavigateToPage() method.)
IsLoggedIn = true;
}
NavigateToPage (PageType pageType)
{
if (pageType == LoginPage)
{
// navigate to login page.
return;
}
if (! IsLoggedIn) Login();
// switch case for navigation to other page types.
}
这是一种伪代码。实际的代码一直工作到现在,没有任何问题。不过,我觉得有些不对劲,因为它看起来很循环。我认为可以采取一些措施来改进代码并消除循环依赖。有人可以提出什么建议吗?
我几乎打算提出语言和平台无关的问题。但我看到我无法解释它。 基本上,页面独立于我的班级。我正在开发的库,需要一个网站并浏览其页面。我只是想在网站中自动执行任务。所以,我正在谈论的登录页面和其他页面都在我要浏览的网站的上下文中。该库自动化浏览。我希望我现在很清楚。
答案 0 :(得分:0)
你根本没有提到技术堆栈,但它的实际情况是有一个单独的登录页面和主页面。我不确定NavigateToPage(loginPage)是否有意义,因为必须为任何通常是登录页面的应用程序提供默认页面。
答案 1 :(得分:0)
在您的示例中,登录方法不必重定向到登录页面!因为当用户点击登录页面中的提交时,可能会调用此方法。
login()方法应该只验证user / passwd,并使用您选择的ID设置Session / http标头,让服务器知道有效会话是ON。 (有了这个,没有更多的周期; - ))
NavigateToPage()可以重命名为validateUserSession(),并且只验证用户是否已挂起。如果使用Java,那么validateUserSession()应该在servletFilter中,因此每次请求到服务器时,都会进行验证。
希望有所帮助
答案 2 :(得分:0)
使用现有的伪逻辑,我将重构代码并引入一个导航到登录页面的显式方法
Login()
{
NavigateToLoginPage();
}
NavigateToLoginPage()
{
// navigate to login page.
// log in and do validation stuff.
// set IsLoggedIn to true for further methods
IsLoggedIn = true;
}
NavigateToPage (PageType pageType)
{
if (! IsLoggedIn) NavigateToLoginPage();
// switch case for navigation to other page types.
}