[英]ASP.NET: MVC 4 - Simple Login with Web Services as the data store
我正在使用表单身份验证构建ASP.NET MVC 4应用程序。
在我的帐户控制器中,我从表格中收到用户名和密码。
如果用户名/密码正确,则Web服务将返回true / false。
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
bool isValid=MyWebService.ValidateLogin(model.Name,model.Pass);
if(isValid){
*** Here: Tell ASP.NET that model.Name is a logged in user
*** and to keep a cookie so that they stay logged in ???
RedirectToAction(...);
}
}
我希望尽可能多地利用ASP.NET基础结构,但要使用Web Service获得正确的登录名。
在框架级别的支持下,最全面的方法是实现自定义MembershipProvider
。 这非常简单,并且具有非常易于实现的功能。 如果您想利用其他成员资格,身份验证和授权,这可能是您的最佳选择。 这是您的步骤:
YourMembershipProvider
的新类 MembershipProvider
继承并实现抽象方法 ValidateUser
GetUser
您的GetUser
将使用username
并使用您的Web服务来查找您要跟踪的任何相关成员详细信息。
ValidateUser
将是您调用Web服务的地方。 如果用户签出,则返回true
。
最后,更新您的Web配置。 在System.Web中,您将需要以下内容:
<membership defaultProvider="YourMembershipProvider">
<providers>
<clear />
<add name="YourMembershipProvider" type="YourNamespace.YourMembershipProvider" />
</providers>
</membership>
因此,要概述...实现您的类,连接您的Web配置,使用框架来处理其余部分。
干杯。
对我来说看起来不错,也许我会在您对Web服务的调用中添加另一个参数,以便在登录时出现错误时返回错误值。
bool isValid=MyWebService.ValidateLogin(model.Name,model.Pass, rtnErrorStatusCode);
Web服务登录后,您可以随时检查用户是否使用
If (Request.IsAuthenticated = False) Then
' This user has not logged in
' redirect to login page here
End if
至于cookie,我想只有在您要保留一些会话信息时才需要它。
保存cookie只会为您提供一种不同的方法来知道用户已登录,但是“ Request.Authenticated”语句还会告诉您用户是否已登录,因为它返回一个布尔值,因此可能拥有cookie只是重复该操作,因此除非您存储会话特定的信息(例如用户偏好或主题等),否则可能不需要Cookie。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.