Watch Pre-recorded Live Shows Here
Why Join
Become a member
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
C# Corner Home
Technologies
Monthly Leaders
ASK A QUESTION
Forum guidelines
Raju Fodse
1.9k
235
22k
Role base Authentication in MVC
Feb 22 2020 4:12 AM
I am creating role base authentication with User and UserRole Table. But my login page redirect again and again. I can see 302 error in Inspect element utility.
Below are source code
MyAccount Controller
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.Mvc;
using
System.Web.Security;
using
EasyApp.Models;
namespace
EasyApp.Controllers
{
public
class
MyAccountController : Controller
{
// GET: MyAccount
[AllowAnonymous]
public
ActionResult Login()
{
return
View();
}
[AllowAnonymous]
[HttpPost]
[ValidateAntiForgeryToken]
public
ActionResult Login(Login l,
string
ReturnUrl =
""
)
{
using
(LPDBContext dc =
new
LPDBContext())
{
var user = dc.Users.Where(a => a.Username.Equals(l.Username) && a.Password.Equals(l.Password)).FirstOrDefault();
if
(user !=
null
)
{
FormsAuthentication.SetAuthCookie(user.Username,
false
);
if
(Url.IsLocalUrl(ReturnUrl))
{
return
Redirect(ReturnUrl);
}
}
ModelState.AddModelError(
"UserName"
,
"username or password is incorrect !"
);
ModelState.Remove(
"Password"
);
return
View();
}
}
[Authorize]
public
ActionResult Logout()
{
FormsAuthentication.SignOut();
return
RedirectToAction(
"Index"
,
"Main"
);
}
}
}
Main Controller
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.Mvc;
namespace
EasyApp.Controllers
{
[Authorize]
public
class
MainController : Controller
{
// GET: Main
[AllowAnonymous]
public
ActionResult Index()
{
return
View();
}
[Authorize]
public
ActionResult EDPDashboard()
{
return
View();
}
[Authorize(Roles =
"Admin"
)]
public
ActionResult DPDashboard()
{
return
View();
}
[Authorize(Roles =
"Admin"
)]
public
ActionResult RTFlim()
{
return
View();
}
}
}
Web.Config File
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?
LinkId
=
301880
--
>
<
configuration
>
<
configSections
>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<
section
name
=
"entityFramework"
type
=
"System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission
=
"false"
/>
</
configSections
>
<
connectionStrings
>
<
add
name
=
"LPDBContext"
connectionString
="meta
data
=res://*/Models.EasyAppDB.csdl|res://*/Models.EasyAppDB.ssdl|res://*/Models.EasyAppDB.msl;provider=System.Data.SqlClient;provider connection string="data
source
=
EDP
\SQLEXPRESS;initial
catalog
=
LPDB
;persist security
info
=
True
;user
id
=
sa
;
password
=
sa123
;
multipleactiveresultsets
=
True
;application
name
=EntityFramework
""
providerName
=
"System.Data.EntityClient"
/>
</
connectionStrings
>
<
appSettings
>
<!--<add key="owin:appStartup" value="MyAccount.Login" />-->
<!--<add key="owin:AutomaticAppStartup" value="false" />-->
<
add
key
=
"webpages:Version"
value
=
"3.0.0.0"
/>
<
add
key
=
"webpages:Enabled"
value
=
"false"
/>
<
add
key
=
"ClientValidationEnabled"
value
=
"true"
/>
<
add
key
=
"UnobtrusiveJavaScriptEnabled"
value
=
"true"
/>
</
appSettings
>
<
system.web
>
<
globalization
uiCulture
=
"en"
culture
=
"en-GB"
/>
<
authentication
mode
=
"Forms"
>
<
forms
loginUrl
=
"MyAccount/Login"
/>
</
authentication
>
<
roleManager
defaultProvider
=
"myroleprovider"
enabled
=
"true"
>
<
providers
>
<
clear
/>
<
add
name
=
"myroleprovider"
type
=
"EasyApp.WebRoleProvider"
/>
</
providers
>
</
roleManager
>
<
compilation
debug
=
"true"
targetFramework
=
"4.5"
/>
<
httpRuntime
targetFramework
=
"4.5"
/>
<
pages
>
<
namespaces
>
<
add
namespace
=
"GridMvc"
/>
<
add
namespace
=
"System.Web.Helpers"
/>
<
add
namespace
=
"System.Web.Mvc"
/>
<
add
namespace
=
"System.Web.Mvc.Ajax"
/>
<
add
namespace
=
"System.Web.Mvc.Html"
/>
<
add
namespace
=
"System.Web.Optimization"
/>
<
add
namespace
=
"System.Web.Routing"
/>
<
add
namespace
=
"System.Web.WebPages"
/>
</
namespaces
>
</
pages
>
</
system.web
>
<
system.webServer
>
<
modules
>
<!--<remove name="FormsAuthentication" />-->
</
modules
>
<
directoryBrowse
enabled
=
"true"
/>
</
system.webServer
>
<
runtime
>
<
assemblyBinding
xmlns
=
"urn:schemas-microsoft-com:asm.v1"
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"Newtonsoft.Json"
culture
=
"neutral"
publicKeyToken
=
"30ad4fe6b2a6aeed"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-6.0.0.0"
newVersion
=
"6.0.0.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Optimization"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"1.0.0.0-1.1.0.0"
newVersion
=
"1.1.0.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"WebGrease"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-1.5.2.14234"
newVersion
=
"1.5.2.14234"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Helpers"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"1.0.0.0-3.0.0.0"
newVersion
=
"3.0.0.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Mvc"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-5.2.3.0"
newVersion
=
"5.2.3.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.WebPages"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-3.0.0.0"
newVersion
=
"3.0.0.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"Antlr3.Runtime"
publicKeyToken
=
"eb42632606e9261f"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-3.5.0.2"
newVersion
=
"3.5.0.2"
/>
</
dependentAssembly
>
</
assemblyBinding
>
</
runtime
>
<
entityFramework
>
<
defaultConnectionFactory
type
=
"System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"
>
<
parameters
>
<
parameter
value
=
"mssqllocaldb"
/>
</
parameters
>
</
defaultConnectionFactory
>
<
providers
>
<
provider
invariantName
=
"System.Data.SqlClient"
type
=
"System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"
/>
</
providers
>
</
entityFramework
>
<
system.codedom
>
<
compilers
>
<
compiler
language
=
"c#;cs;csharp"
extension
=
".cs"
type
=
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel
=
"4"
compilerOptions
=
"/langversion:6 /nowarn:1659;1699;1701"
/>
<
compiler
language
=
"vb;vbs;visualbasic;vbscript"
extension
=
".vb"
type
=
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel
=
"4"
compilerOptions
="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"
Web
\" /optionInfer+"
/>
</
compilers
>
</
system.codedom
>
</
configuration
>
and My Error
User base authentication works but Role base could not works. whats is the reason.....?
Reply
Answers (
6
)
Static method use in thread??
Is there possibility of Pagination in Swagger.UI ?